home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / gfx / vtdevel3.lha / SourceAGA / Scroll.s < prev    next >
Text File  |  1994-06-27  |  66KB  |  3,223 lines

  1. ;scroll
  2.  
  3.  
  4. rout            ;when this is off, the routine-file will be
  5.             ;assembled, on=testing
  6.             
  7. ;debug            ;when this is on, colors in the background will
  8.             ;show how much time the routine needs.
  9.  
  10. ;ntsctest        ;when this is on, the routineplayer is in ntsc-mode
  11.  
  12. ;ocs            ;off=AGA,on=OCS testing not possible on OCS !
  13.  
  14. routinemode    equ    2        ;the routinemode !
  15.  
  16.  
  17. ; VideoTracker AGA developer source 25-12-93
  18. ; 24-bits colors, Super-HiRes, HAM8, maximum burstmode (64 pixels aligned)
  19. ; wich makes low-resolution overscan a bit ugly.
  20. ; no "interactive" support anymore, it's only used by Kick 1.3 users.
  21.  
  22. ; the first part of the source handles the things that are necessary to
  23. ; show the picture/copper and playing of the routine.
  24. ; the part between the "***" lines is the routine-source.
  25. ; at the bottom of the file, there are the necessary incbin-files who
  26. ; are needed to test the routine.
  27. ; these are saved with "save effect" in videotracker. they are raw
  28. ; data files which can be fonts,pictures,landscapes,vectorobjects
  29. ; etcetra.
  30. ; the incbin-files are put in the "variables" table, in the routine
  31. ; player-handler
  32. ; the place where it's done can be found by searching for "!!!"
  33.  
  34.     opt    a+    ;devpac 3 optimize
  35.     opt    o+
  36.  
  37. vew_wid    equ    48
  38. vew_hgt    equ    290
  39. win_hgt    equ    117
  40. win_str    equ    $1a
  41.  
  42.         ifd    ocs
  43. pic_wid        equ    4        ;wide in bytes
  44. pic_hgt        equ    6        ;hoogte
  45. pic_dpt        equ    8        ;number planes
  46. pic_ani        equ    10        ;aantal effes (anim)
  47. pic_vew        equ    12        ;viewmode
  48. pic_cycstr    equ    14        ;cycle start (*4)
  49. pic_cycend    equ    15        ;cycle end (*4)
  50. pic_cycspd    equ    16        ;cycle speed (*4)
  51. pic_cycadd    equ    17        ;cycle add (*4)
  52. pic_palnum    equ    30        ;aantal kleuren
  53. pic_pal        equ    32        ;palette start
  54. pic_palsiz    equ    256*2        ;vaste palette size
  55. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  56.         endc
  57.         
  58.         ifnd    ocs
  59. pic_wid        equ    4        ;wide in bytes
  60. pic_hgt        equ    6        ;hoogte
  61. pic_dpt        equ    8        ;number planes
  62. pic_ani        equ    10        ;aantal effes (anim)
  63. pic_vew        equ    12        ;viewmode
  64. pic_cycstr    equ    14        ;cycle start (*8)
  65. pic_cycend    equ    15        ;cycle end (*8)
  66. pic_cycspd    equ    16        ;cycle speed (*8)
  67. pic_cycadd    equ    17        ;cycle add (*8)
  68. pic_widmod    equ    46        ;animation-width modulo
  69. pic_future    equ    50        ;free future space
  70. pic_palnum    equ    62        ;aantal kleuren
  71. pic_pal        equ    64        ;palette start
  72. pic_palsiz    equ    256*4        ;vaste palette size (longwords)
  73. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  74.         endc
  75.         
  76. fon_hgt        equ    4            ;font hoogte
  77. fon_wid        equ    8            ;plane breedte in bytes
  78. fon_dpt        equ    12            ;depth
  79. fon_chrf    equ    16            ;eerste character
  80. fon_chrl    equ    20            ;laatste character
  81. fon_widtab    equ    24            ;font breedte per char
  82. fon_rawpos    equ    256*2+fon_widtab    ;start raw char position
  83. fon_raw        equ    256*4+fon_rawpos    ;start raw planes
  84.  
  85. var_len        equ    $300        ;lengte vartabel
  86.  
  87. var__GfxBase    equ    $000        ;graphics lib
  88. var_pic1    equ    $004        ;current picture
  89. var_anispd1    equ    $008        ;animspeed
  90. var_anitel1    equ    $00c        ;animcount
  91. var_cprbck    equ    $010        ;copperback
  92. var_bck        equ    $014        ;background
  93. var_pic2    equ    $018        ;current picture
  94. var_ntsc    equ    $01c        ;ntsc/pal frequence
  95. var_lnd        equ    $020        ;landscape
  96. var_anilop1    equ    $024
  97. var_rottrg    equ    $028        ;effect trigger
  98. var_txt1    equ    $040        ;text
  99. var_txt16    equ    15*4+var_txt1
  100. var_vec1    equ    $080        ;vectors
  101. var_vec16    equ    15*4+var_vec1
  102. var_fon1    equ    $0c0        ;fonts
  103. var_fon16    equ    15*4+var_fon1
  104. var_cols1    equ    $100        ;colorsets
  105. var_cols16    equ    15*4+var_cols1
  106. var_obj1    equ    $180        ;objects
  107. var_obj16    equ    15*4+var_obj1
  108.  
  109.     ifd    rout
  110.     ;videotracker routine-test
  111.  
  112.     incdir    "w:include/"
  113.     include    "exec/types.i"
  114.     include    "graphics/gfxbase.i"
  115.     include    "lvo/graphics_lib.i"
  116.     incdir    'videotracker:effect/'
  117.  
  118.     SECTION    1,CODE_C
  119. tus
  120.     lea    var,a0
  121.  
  122.     move.l    #rotincfon,var_fon1(a0)        ;incbinfile !!!
  123.     move.l    #rotincfon,4+var_fon1(a0)    ;incbinfile !!!
  124.     move.l    #rotinctxt,var_txt1(a0)        ;incbinfile !!!
  125.  
  126. ;    move.l    #rotincobj,var_obj1(a0)    ;incbinfile !!!
  127. ;    move.l    #rotincbck,var_bck(a0)    ;incbinfile !!!
  128. ;    move.l    #rottube,var_vec1(a0)    ;incbinfile !!!
  129. ;    move.l    #rotsrc,curpic1        ;picture !!!
  130. ;    move.l    #rotsrc,curpal1        ;palette !!!
  131. ;    move.l    #rotset,var_cols1(a0)    ;colorset !!!
  132.  
  133.     bsr    paltabres
  134.  
  135.     move.l    ($4).w,a6
  136.     sub.l    a1,a1
  137.     jsr    -$126(a6)        ;findtask
  138.     move.l    d0,curtsk
  139.     move.l    d0,a0
  140.     move.l    $b8(a0),tskpri
  141.  
  142.     lea    dosnam,a1        ;doslib openen
  143.     moveq.l    #0,d0
  144.     move.l    (4).w,a6
  145.     jsr    -408(a6)        ;openlib
  146.     move.l    d0,doslib
  147.  
  148.     bsr.s    label5            ;videotracker opstarten
  149.     
  150.     move.l    curtsk,a0
  151.     move.l    tskpri,$b8(a0)
  152.     move.l    ($4).w,a6
  153.     jsr    -$84(a6)        ;forbid
  154.  
  155.     move.l    doslib,a1
  156.     move.l    (4).w,a6
  157.     jsr    -414(a6)        ;closelib
  158.  
  159.     moveq.l    #0,d0
  160.     rts
  161.     
  162. label5
  163.     move.l    (4).w,a6        ;workbench gedoe
  164.  
  165.     move.b    530(a6),ntscmode    ;50/60 hertz halen
  166.  
  167.     ifd    ntsctest
  168.     move.b    #60,ntscmode        ;60 hertz (ntsc)
  169.     endc
  170.  
  171.     cmp.b    #50,ntscmode        ;ntsc ?
  172.     beq.s    str.ntsc
  173.     move.l    #vew_hgt-56,hogscr    ;set NTSC screen hight
  174. str.ntsc
  175.  
  176.     lea    cprjmp,a2        ;copjmp zetten !
  177.     move.l    #cprbck-8,d0
  178.     move.w    d0,6(a2)
  179.     swap    d0
  180.     move.w    d0,2(a2)
  181.  
  182.     lea    cprbck-8,a2        ;copstr zetten !
  183.     move.l    #cpr,d0
  184.     move.w    d0,6(a2)
  185.     swap    d0
  186.     move.w    d0,2(a2)
  187.  
  188.     bsr    cprsprrem        ;sprites legen
  189.  
  190.     lea    gfxnam,a1        ;graphics lib openen
  191.     move.l    (4).w,a6
  192.     jsr    -408(a6)        ;openlib
  193.     move.l    d0,a6
  194.     move.l    d0,gfxlib
  195.     move.l    38(a6),oldcprlist
  196.  
  197.     bset    #1,$bfe001
  198.     bsr    copbuf            ;copper vullen
  199.  
  200.     bsr    sysoff
  201.  
  202. gadrun
  203.     btst    #6,($bfe001).l
  204.     bne    gadrun
  205.  
  206. scrend
  207. scrend.play
  208.     bsr    syson
  209.  
  210.     move.l    gfxlib,a1
  211.     move.l    (4).w,a6
  212.     jsr    -414(a6)        ;closelib
  213.  
  214. scrend.qb
  215.     moveq.l    #0,d0    
  216.     rts
  217.     
  218.     ;vertical blank interrupt, no blits.
  219.     ;handles counters,interlace,sprite
  220.     ;level 3
  221.  
  222. intvb
  223.     bra.s    intvb.cnt
  224.     dc.l    'VIDU'
  225.     dc.l    'LOOP'
  226. intvb.cnt
  227.     movem.l    d0-d7/a0-a6,-(sp)
  228.     lea    ($dff000).l,a6
  229.  
  230.     move.w    $01e(a6),d0
  231.     btst    #5,d0            ;vblank ?
  232.     bne.s    intvb.vb
  233.  
  234.     bra.s    intcop.end
  235.  
  236. intvb.vb
  237.     bsr    grap
  238.     bsr    palctr            ;palette zetten
  239.     bsr.s    copbuf            ;copper vullen
  240.     
  241. intvb.end
  242.     move.w    #$0020,$09c(a6)    ;vb bit wissen
  243.     movem.l    (sp)+,d0-d7/a0-a6    ;multitask uit, shit !
  244.     rte
  245.  
  246. intcop.end
  247.     movem.l    (sp)+,d0-d7/a0-a6
  248.     move.l    intvbold,-(sp)
  249.     rts
  250.  
  251.     ;transmission buffer empty routine, BLIT !
  252.     ;handles routines,animations
  253.     
  254. inttbe                    ;tbe interrupt
  255.     movem.l    d0-d7/a0-a6,-(sp)
  256.     lea    ($dff000).l,a6
  257.  
  258.     move.w    $01e(a6),d0
  259.     btst    #0,d0            ;no tbe ?
  260.     beq.s    intdskblk
  261.  
  262.  
  263.     btst    #6,($bfe001).l        ;muis ingedrukt ?
  264.     beq.s    inttbe.cop
  265.     btst    #2,($dff016).l
  266.     beq.s    inttbe.cop
  267.  
  268.     ifd    debug
  269.     move.w    #$700,$dff180
  270.     endc
  271.     
  272.     bsr    rotply            ;routineplayer BLIT !
  273.     bsr.s    copbuf            ;copper vullen
  274.  
  275.     ifd    debug
  276.     move.w    #$070,$dff180
  277.     endc
  278.     
  279. inttbe.cop
  280.  
  281. inttbe.end
  282.     move.w    #$0001,$09c(a6)
  283.     movem.l    (sp)+,d0-d7/a0-a6
  284.     rte
  285.  
  286. intdskblk
  287.     move.w    #$0001,$09c(a6)        ;be sure for no tbe handling
  288.     movem.l    (sp)+,d0-d7/a0-a6
  289.     move.l    inttbeold,-(sp)
  290.     rts
  291.  
  292.  
  293.     ;moves the copperbuffer to the copperlist
  294.     ;sort of double buffering
  295.     
  296. copbuf
  297.     movem.l    d0-d7/a0-a6,-(sp)
  298.  
  299.     lea    ($dff000).l,a6
  300.  
  301. copbuf.novb                ;copperchange overslaan
  302.     moveq.l    #0,d0
  303.     move.b    $005(a6),d0
  304.     lsl.w    #8,d0
  305.     moveq.l    #0,d1
  306.     move.b    $006(a6),d1
  307.     add.w    d1,d0
  308.  
  309.     cmp.w    #$4,d0            ;lower limit, all stations 100%
  310.     blt    copbuf.novb
  311.  
  312.     cmp.b    #50,ntscmode
  313.     beq.s    copbuf.pal
  314.     cmp.w    #$133-72-8,d0        ;ntsc grens
  315.     bge    copbuf.novb
  316.     bra.s    copbuf.cont
  317. copbuf.pal
  318.     cmp.w    #$133-8,d0        ;pal grens
  319.     bge    copbuf.novb
  320. copbuf.cont
  321.  
  322.     lea    gra.s,a0        ;buffer copieren
  323.     lea    cprbuf,a1
  324. copbuf_aga                ;AGA stuff :)
  325.     move.l    #(gra.ql)/4-1,d0
  326. copbuf.a
  327.     move.w    2(a0),2(a1)
  328.     add.l    #4,a0
  329.     add.l    #4,a1
  330.     dbra    d0,copbuf.a
  331.  
  332. copbuf.end
  333.     movem.l    (sp)+,d0-d7/a0-a6
  334.     rts
  335.  
  336.     ;goes back to the workbench
  337.     
  338. syson
  339.     movem.l    d0-d7/a0-a6,-(sp)
  340.  
  341.     move.w    #$0001,$dff09a        ;tbeint uit
  342.     move.l    intvbold,($6c).w
  343.     move.l    inttbeold,($64).w
  344.  
  345.     move.l    4,a6
  346.     jsr    -138(a6)        ;permit
  347.  
  348.     move.l    gfxlib,a6
  349.     jsr    -462(a6)        ;disownblitter
  350.  
  351.     move.l    wbview,a1
  352.     move.l    gfxlib,a6
  353.     jsr    _LVOLoadView(a6)     ; Fix view
  354.     jsr    _LVOWaitTOF(a6)
  355.     jsr    _LVOWaitTOF(a6)         ; wait for LoadView()
  356.  
  357. syson.ras
  358.     cmp.b    #$c0,$dff006        ;prevent copperjump
  359.     bne    syson.ras
  360.  
  361.     move.l    gfxlib,a6
  362.     move.l    gb_copinit(a6),$dff080     ; Kick it into life
  363.  
  364.     movem.l    (sp)+,d0-d7/a0-a6
  365.     rts
  366.     
  367.     ;goes back to the gadgetscreen
  368.     
  369. sysoff
  370.     movem.l    d0-d7/a0-a6,-(sp)
  371.      
  372.     move.l    gfxlib,a6
  373.     move.l    gb_ActiView(a6),wbview    ;current view
  374.     sub.l    a1,a1            ; clear a1
  375.     jsr     _LVOLoadView(a6)     ; Flush View to nothing
  376.     jsr    _LVOWaitTOF(a6)     ; Wait once
  377.     jsr    _LVOWaitTOF(a6)     ; Wait again.
  378.  
  379.     move.l    gfxlib,a6
  380.     jsr    -456(a6)        ;ownblitter
  381.  
  382.     move.l    4,a6
  383.     jsr    -132(a6)        ;forbid
  384.         
  385.     move.l    ($6c).w,intvbold
  386.     move.l    #intvb,($6c).w
  387.     move.l    ($64).w,inttbeold
  388.     move.l    #inttbe,($64).w
  389.     move.w    #$8001,$dff09a        ;tbeint aan
  390.     bsr    gracpr            ;reset copper
  391.     bsr    copbuf            ;copy copper
  392.     move.l    #cpr,$dff080
  393.  
  394.     movem.l    (sp)+,d0-d7/a0-a6
  395.     rts
  396.     
  397. cprsprrem
  398.     movem.l    d0-d7/a0-a6,-(sp)
  399.     lea    cprspr,a0
  400.     move.l    #sprdat,d0
  401.     move.w    #7,d1
  402. cprsprrem.a
  403.     move.w    d0,3*2(a0)
  404.     swap    d0
  405.     move.w    d0,1*2(a0)
  406.     swap    d0
  407.     add.l    #8,a0
  408.     dbra    d1,cprsprrem.a
  409.     movem.l    (sp)+,d0-d7/a0-a6
  410.     rts
  411.  
  412. varset                    ;variablen neerzetten
  413.     movem.l    d0-d7/a0-a6,-(sp)
  414.     move.l    #var,a0
  415.  
  416.     move.l    #cprbck,var_cprbck(a0)
  417.     move.l    gfxlib,var__GfxBase(a0)
  418.     move.b    ntscmode,var_ntsc(a0)
  419.  
  420.     move.l    curpic1,var_pic1(a0)    ;variabel
  421.     move.l    curpic2,var_pic2(a0)    ;variabel
  422.     move.w    anispd1,var_anispd1(a0)
  423.     move.w    anitel1,var_anitel1(a0)
  424.     move.b    anilop1,var_anilop1(a0)
  425.     move.l    #rottrg,var_rottrg(a0)
  426.     movem.l    (sp)+,d0-d7/a0-a6
  427.     rts
  428.     
  429.     ;this routine handles all videotracker-routines
  430.  
  431. rotply    
  432.     movem.l    d0-d7/a0-a6,-(sp)
  433.  
  434.     moveq.l    #0,d0
  435.  
  436.     lea    currot1,a2        ;routine 1
  437.     move.w    rotinf1,d0        ;routine info
  438.     bsr.s    rotplyr
  439.  
  440. rotply.end
  441.     movem.l    (sp)+,d0-d7/a0-a6
  442.     rts
  443.  
  444.     ;this routine handles 1 routine, BLIT !
  445.     
  446. rotplyr
  447.     movem.l    d0-d7/a1-a6,-(sp)
  448.  
  449.     move.l    #rot,(a2)        ;routinestart address
  450.  
  451. ;    move.b    #50,ntscmode        ;ntsc/pal hz
  452.     clr.l    curpic2            ;background picture
  453.     move.w    #1,anispd1        ;animationspeed
  454.     clr.w    anitel1            ;animation position
  455.  
  456.     lea    var,a0            ;communication-table
  457. ;    move.l    #rotinc,var_cols1(a0)    ;incbinfile !!!!!!!!!
  458.  
  459.     move.b    #0,anilop1        ;animloop off/on !!!
  460.     move.w    #32,anispd1        ;animdelay !!!
  461.     move.l    #routinemode,d0        ;routinemode !!!
  462.  
  463.     sub.l    a0,a0            ;picture info legen
  464.  
  465.     tst.l    (a2)            ;is er een routine ?
  466.     beq    rotplyr.end        ;interlace handling
  467.  
  468.     move.l    intdel,d2        ;delay
  469.     move.l    inttel,d1        ;teller
  470.     cmp.w    d2,d1
  471.     blt    rotplyr.end
  472.     clr.l    inttel
  473.                 
  474.     bsr    varset            ;variabelen updaten
  475.  
  476.     move.l    (a2),a1            ;routine halen
  477.     move.l    #var,a0            ;variablen tabel
  478.  
  479.     movem.l    d3-d7/a1-a6,-(sp)
  480.     moveq.l    #0,d1            ;vars wissen
  481.     moveq.l    #0,d2
  482.     moveq.l    #0,d3
  483.     moveq.l    #0,d4
  484.     moveq.l    #0,d5
  485.     moveq.l    #0,d6
  486.     moveq.l    #0,d7
  487.     sub.l    a2,a2
  488.     sub.l    a3,a3
  489.     sub.l    a4,a4
  490.     sub.l    a5,a5
  491.  
  492.     jsr    4(a1)            ;routine afwerken
  493.     movem.l    (sp)+,d3-d7/a1-a6
  494.  
  495.     ;Routine:
  496.     ;
  497.     ;Input:
  498.     ;a0=variabelentabel
  499.     ;d0=routinemode
  500.     ;
  501.     ;Output:
  502.     ;a0=picture
  503.     ;d1=copperlist
  504.     ;d2=interruptdelay        (NOT used till now)
  505.     
  506.     move.w    #$0020,$dff09a        ;vb off !
  507.  
  508.     move.l    d2,intdel        ;delay
  509.  
  510.     lea    cprjmp,a3
  511.     move.l    #cprbck-8,d0
  512.  
  513.     cmp.l    (a2),a1            ;routine ondertussen gewipt ?
  514.     bne.s    rotplyr.nocop
  515.     tst.l    d1            ;copperlist ?
  516.     beq.s    rotplyr.nocop
  517.     move.l    d1,d0
  518. rotplyr.nocop
  519.     move.w    d0,6(a3)
  520.     swap    d0
  521.     move.w    d0,2(a3)
  522.  
  523.     cmp.l    #0,a0            ;picture ?
  524.     beq.s    rotplyr.endvb
  525.  
  526.     move.l    a0,curpic1        ;current picture (cycle)
  527.     move.l    a0,curpal1        ;current palette
  528.  
  529.     tst.b    rotdpl            ;plane is geleverd
  530.     beq.s    rotplyr.set
  531.     clr.b    rotdpl
  532.     clr.l    cycdel1            ;cycle info wissen
  533.     clr.l    4+cycdel1
  534.     clr.l    curfrm1            ;curfrm1, altijd planes zetten
  535. rotplyr.set
  536.     clr.b    dplctr
  537.     bsr.s    grap
  538.     bsr    grac            ;colorset
  539. rotplyr.endvb
  540.     move.w    #$8020,$dff09a
  541. rotplyr.end
  542.     movem.l    (sp)+,d0-d7/a1-a6
  543.     rts
  544.  
  545.     ;removes possible routine-coppers
  546.     
  547. gracpr
  548.     movem.l    d0-d7/a0-a6,-(sp)
  549.     lea    cprjmp,a3
  550.     move.l    #cprbck-8,d0        ;copperlist resetten
  551.     move.w    d0,6(a3)
  552.     swap    d0
  553.     move.w    d0,2(a3)
  554.     movem.l    (sp)+,d0-d7/a0-a6
  555.     rts
  556.  
  557. grap                    ;d7=anim
  558.     movem.l    d0-d7/a0-a6,-(sp)
  559.  
  560.     clr.l    d7
  561.  
  562.     tst.l    curpic1            ;current picture ?
  563.     beq    grap.end
  564.  
  565.     move.l    curpic1,a2        ;normal pic halen
  566.  
  567.     lea    gracprscr,a1        ;window neerzetten
  568.     move.l    hogscr,d1
  569.  
  570.     move.w    pic_hgt(a2),d3        ;pic hoogte
  571.     move.w    pic_vew(a2),d5
  572.     btst    #2,d5            ;interlace ?
  573.     beq.s    grap.nohi4
  574.     lsr.w    #1,d3            ;/2
  575. grap.nohi4
  576.     cmp.w    d3,d1
  577.     bge.s    grap.hog
  578.     move.w    d1,d3
  579. grap.hog
  580.     sub.w    d3,d1
  581.     lsr.w    #1,d1
  582.     add.w    #win_str,d1
  583.     move.w    d1,d2
  584.     add.w    d3,d2
  585.  
  586.     move.b    d1,2(a1)        ;y start
  587.     move.b    d2,6(a1)        ;y end
  588.  
  589.     move.w    pic_wid(a2),d4        ;pic breedte in bytes
  590.     lsl.l    #3,d4
  591.  
  592.     move.l    #vew_wid*8,d0
  593.     move.l    #0,d1
  594.     move.l    #$61,d6
  595.  
  596.     cmp.w    #40,pic_wid(a2)        ;overscan ?
  597.     ble.s    grap.noov1
  598.     move.l    #$41,d6
  599. grap.noov1
  600.  
  601.     move.w    pic_vew(a2),d5
  602.     btst    #15,d5            ;hires ?
  603.     beq.s    grap.nohi2
  604.  
  605.     move.l    #(vew_wid)*8*2,d0
  606.     move.l    #1,d1
  607.     move.l    #$61,d6
  608.  
  609.     cmp.w    #80,pic_wid(a2)        ;overscan ?
  610.     ble.s    grap.nohi2
  611.     move.l    #(vew_wid)*8*2,d0
  612.     move.l    #$51,d6
  613.  
  614.     bra.s    grap.noshi2
  615. grap.nohi2    
  616.     btst    #6,d5            ;super hires ?
  617.     beq.s    grap.noshi2
  618.  
  619.     move.l    #(vew_wid)*8*4,d0
  620.     move.l    #2,d1
  621.     move.l    #$61,d6
  622.  
  623.     cmp.w    #80*2,pic_wid(a2)    ;overscan ?
  624.     ble.s    grap.noshi2
  625.     move.l    #(vew_wid)*8*4,d0
  626.     move.l    #$51,d6
  627.  
  628. grap.noshi2    
  629.  
  630.     clr.w    d5
  631.     cmp.w    d0,d4            ;breeder dan scherm ?
  632.     ble.s    grap.c
  633.     move.w    d4,d5
  634.     move.w    d0,d4
  635.     sub.w    d0,d5            ;modulo
  636.     lsr.w    #3,d5            ;/8
  637. grap.c
  638.     lsr.w    d1,d0
  639.     lsr.w    d1,d4
  640.  
  641.     move.w    d0,d2
  642.     sub.w    d4,d2
  643.     lsr.w    #1,d2            ;/2
  644.  
  645.     add.w    d6,d2
  646.     move.b    d2,3(a1)        ;x start
  647.     move.w    d2,d3            ;d3 bewaren !
  648.  
  649.     add.w    d4,d2            ;d4 bewaren !
  650.     move.b    d2,7(a1)        ;x end
  651.     
  652.     move.w    pic_vew(a2),d6
  653.     btst    #15,d6            ;hires ?
  654.     beq.s    grap.nohi5    
  655.     add.l    d4,d4            ;*2
  656.     bra.s    grap.noshi5
  657. grap.nohi5
  658.     btst    #6,d6            ;super hires ?
  659.     beq.s    grap.noshi5    
  660.     add.l    d4,d4            ;*4
  661.     add.l    d4,d4
  662. grap.noshi5
  663.  
  664.     move.l    d7,-(sp)
  665.     move.w    pic_vew(a2),d6
  666.     move.l    #17,d0
  667.     move.l    #4,d1            ;ecs 1
  668.     move.l    #3,d7
  669.  
  670.     btst    #15,d6            ;hires ?
  671.     beq.s    grap.nohi3    
  672.     move.l    #17,d0            ;ecs 9
  673.     move.l    #4,d1            ;ecs 2
  674.     move.l    #2,d7
  675.     bra.s    grap.noshi3
  676. grap.nohi3
  677.     btst    #6,d6            ;super hires ?
  678.     beq.s    grap.noshi3    
  679.     move.l    #17,d0            ;ecs 9
  680.     move.l    #4,d1            ;ecs 2
  681.     move.l    #1,d7
  682. grap.noshi3
  683.     sub.w    d0,d3
  684.     lsr.w    #1,d3
  685.     move.w    d3,10(a1)        ;ddfstrt
  686.     
  687.     move.w    d4,d2            ;pic breedte in pixels
  688.     lsr.w    #4,d2            ;/16
  689.     sub.w    d1,d2            ;-1
  690.  
  691.     lsl.w    d7,d2            ;*8
  692.     add.w    d2,d3
  693.     move.w    d3,14(a1)        ;ddfstop
  694.     move.l    (sp)+,d7
  695.     
  696.     lea    pic_raw(a2),a0
  697.  
  698.     moveq.l    #0,d2
  699.     move.w    pic_dpt(a2),d2
  700.     sub.l    #1,d2
  701.     muls    pic_wid(a2),d2
  702.     add.w    d2,d5
  703.  
  704.     move.w    pic_vew(a2),d2        ;viewmode add
  705.     btst    #2,d2
  706.     beq.s    grap.nolace4
  707.  
  708.     moveq.l    #0,d2
  709.     move.w    pic_dpt(a2),d2
  710.     muls    pic_wid(a2),d2
  711.     add.w    d2,d5            ;interlace gedoe
  712. grap.nolace4
  713.  
  714.     lea    gracprbpl,a4        ;iffpln neerzetten
  715.     lea    gracprpln,a0        ;iffpln neerzetten
  716.     moveq.l    #0,d2
  717.     move.w    pic_dpt(a2),d2        ;plnnummer 1 halen
  718.     move.l    #8,d6            ;copper step !
  719.  
  720.     tst.l    curpic2            ;2de picture ?
  721.     bne.s    grap.pic2
  722. grap.nopic2
  723.     move.w    d5,34(a1)        ;modulo oneven zetten
  724.     bra    grap.nodpl
  725. grap.pic2
  726.     move.l    curpic2,a3        ;oneven plane
  727.     move.l    curpic2+4,a6        ;oneven plane
  728.     move.l    currot2,a5        ;oneven plane
  729.     clr.l    curpic2            ;mischien niet goed
  730.     clr.l    curpic2+4        ;mischien niet goed
  731.     clr.l    curpal2            ;mischien niet goed
  732.     clr.l    currot2            ;mischien niet goed
  733.  
  734.     cmp.l    curpic1,a3        ;picture hetzelfde ?
  735.     beq.s    grap.nopic2
  736.     
  737.     cmp.l    #0,currot1        ;routine ?    
  738.     beq.s    grap.norot
  739.     cmp.l    currot1,a5        ;routine hetzelfde ?
  740.     beq.s    grap.nopic2
  741. grap.norot
  742.     cmp.b    #4,d2            ;> 16 kleuren ? (AGA)
  743.     bgt    grap.nopic2
  744.  
  745.     move.w    pic_dpt(a3),d3        ;plnnummer 2 halen
  746.     cmp.b    d2,d3            ;gelijke plnummers ?
  747.     bne.s    grap.nopic2
  748.     move.w    pic_vew(a2),d1
  749.     cmp.w    pic_vew(a3),d1        ;view gelijk ?
  750.     bne.s    grap.nopic2
  751.  
  752.     move.w    pic_vew(a2),d1        ;groter dan view test
  753.     btst    #6,d1            ;super hires ?
  754.     beq.s    grap.nohi2a
  755.     move.l    #vew_wid*4,d1
  756.     bra.s    grap.nohi2b
  757. grap.nohi2a
  758.     btst    #15,d1            ;hires ?
  759.     beq.s    grap.noshi2a
  760.     move.l    #vew_wid*2,d1
  761.     bra.s    grap.nohi2b
  762. grap.noshi2a
  763.     move.l    #vew_wid,d1
  764. grap.nohi2b
  765.     cmp.w    pic_wid(a2),d1        ;breder dan view ?
  766.     bgt.s    grap.small
  767.     cmp.w    pic_wid(a3),d1        ;breder dan view ?
  768.     bgt.s    grap.small
  769.  
  770.     move.w    pic_vew(a2),d1
  771.     btst    #2,d1
  772.     beq.s    grap.nolace8a
  773.     move.l    hogscr,d1
  774.     add.l    d1,d1
  775.     bra.s    grap.nolace8b
  776. grap.nolace8a
  777.     move.l    hogscr,d1
  778. grap.nolace8b
  779.     cmp.w    pic_hgt(a2),d1        ;hoger dan view ?
  780.     bgt.s    grap.small
  781.     cmp.w    pic_hgt(a3),d1        ;hoger dan view ?
  782.     bgt.s    grap.small
  783.     bra.s    grap.big
  784.  
  785. grap.small
  786.     move.w    pic_hgt(a2),d1        ;wid+hgt<vew
  787.     cmp.w    pic_hgt(a3),d1        ;hoogte gelijk ?
  788.     bne    grap.nopic2
  789.     move.w    pic_wid(a2),d1
  790.     cmp.w    pic_wid(a3),d1        ;breedte gelijk ?
  791.     bne    grap.nopic2
  792.  
  793. grap.big
  794.     move.l    a3,curpic2        ;toch wel goed !
  795.     move.l    a6,curpic2+4
  796.     move.l    a3,curpal2
  797.     move.l    a5,currot2
  798.  
  799.     tst.b    dplctr            ;dual playfield al gezet ?
  800.     beq    grap.nocop
  801.  
  802.     move.w    30(a1),34(a1)        ;modulo copieren
  803.  
  804.     move.w    2(a4),d1        ;bplcon0
  805.     btst    #10,d1            ;al dual playfield ?
  806.     beq.s    grap.ta
  807.  
  808.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  809.     move.w    6(a0),14(a0)
  810.  
  811.     move.w    18(a0),26(a0)        ;plane 2>3 copieren
  812.     move.w    22(a0),30(a0)
  813.  
  814.     move.w    34(a0),42(a0)        ;plane 4>5 copieren
  815.     move.w    38(a0),46(a0)
  816.  
  817.     move.w    50(a0),58(a0)        ;plane 6>7 copieren
  818.     move.w    54(a0),62(a0)
  819.  
  820.     bra.s    grap.tb
  821. grap.ta
  822.     move.w    24(a0),58(a0)        ;plane 3>7 copieren
  823.     move.w    28(a0),62(a0)
  824.  
  825.     move.w    18(a0),42(a0)        ;plane 2>5 copieren
  826.     move.w    22(a0),46(a0)
  827.  
  828.     move.w    10(a0),26(a0)        ;plane 1>3 copieren
  829.     move.w    14(a0),30(a0)
  830.  
  831.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  832.     move.w    6(a0),14(a0)
  833.  
  834. grap.tb
  835.     move.l    #palette,a3        ;palette copieren
  836.  
  837.     move.w    #16-1,d1
  838. grap.pal
  839.     move.l    (a3)+,60(a3)
  840.     dbra    d1,grap.pal
  841.  
  842. grap.nocop
  843.     add.w    d3,d2            ;aantal bitplanes
  844.     cmp.w    #8,d2            ;8 bitplanes ?
  845.     blt    grap.no8planes2
  846.     move.w    #%10000,d2        ;only bit 4
  847.     bra    grap.8planes2
  848. grap.no8planes2
  849.     lsl.w    #8,d2
  850.     lsl.w    #4,d2
  851. grap.8planes2
  852.     or.w    #$400,d2        ;dual playfield aan
  853.     move.w    d2,2(a4)        ;bplcon0
  854.  
  855.     movem.l    d0-d7/a0-a6,-(sp)
  856.  
  857.     move.l    curpic,a2        ;animpic ?
  858.     move.l    curfrm,d7
  859.     cmp.l    #0,a2
  860.     bne.s    grap.noanipic
  861.  
  862.     move.l    curpic2,a2        ;normal pic ?
  863.     move.l    curfrm2,d7
  864.     cmp.l    #0,a2
  865.     beq.s    grap.nodplpic
  866.  
  867. grap.noanipic
  868.     add.l    d6,a0
  869.     add.w    d6,d6
  870.     bsr.s    grappln            ;a2,d6,d7,d0
  871. grap.nodplpic
  872.     movem.l    (sp)+,d0-d7/a0-a6
  873.     add.w    d6,d6
  874.     bra.s    grap.nodpla
  875.  
  876.  
  877. grap.nodpl                ;geen dual playfield
  878.     cmp.w    #8,d2            ;8 bitplanes ?
  879.     blt    grap.no8planes
  880.     move.w    #%10000,d2        ;only bit 4
  881.     bra    grap.8planes
  882. grap.no8planes
  883.     lsl.w    #8,d2
  884.     lsl.w    #4,d2
  885. grap.8planes
  886.     move.w    d2,2(a4)        ;bplcon0
  887.  
  888. grap.nodpla
  889.     move.w    d5,30(a1)        ;modulo even
  890.  
  891.     moveq.l    #0,d3
  892.     add.w    pic_vew(a2),d3        ;viewmode add
  893.     moveq.l    #0,d2
  894.     move.w    2(a4),d2
  895.     or.l    d3,d2
  896.  
  897.     ifd    gui
  898.     tst.b    genlck
  899.     bne    grap.genset
  900.     endc
  901.  
  902.     or.l    #$100,d2        ;genlock off ($302)
  903.  
  904.     ifd    gui
  905.     bra    grap.gencont
  906. grap.genset
  907.     or.l    #$102,d2        ;genlock on ($302)
  908. grap.gencont
  909.     endc
  910.     
  911.     move.w    d2,2(a4)
  912.     
  913.     bsr.s    grappln            ;a2,d6,d7,d0
  914.  
  915. grap.end
  916.     
  917.     movem.l    (sp)+,d0-d7/a0-a6
  918.     rts
  919.         
  920.  
  921.     ;sets on of the 2 possible pictures to the copper
  922.     ;handles interlace
  923.  
  924.     ;d7=framenummer
  925.     ;d6=copperliststap
  926.     ;d0=raw planes positie
  927.     ;a2=current picture
  928. grappln                    ;planes invullen 
  929.     movem.l    d0-d7/a0-a6,-(sp)
  930.  
  931.     lea    pic_raw(a2),a1
  932.     move.l    a1,d0            ;raw planes
  933.     
  934.     moveq.l    #0,d2            ;x*y
  935.     move.w    pic_wid(a2),d2
  936.     lsr.l    #1,d2            ;/2
  937.     moveq.l    #0,d3
  938.     move.w    pic_hgt(a2),d3
  939.     muls    d3,d2
  940.     
  941.     move.l    d2,d4
  942.     add.l    d2,d2
  943.  
  944.     move.w    pic_dpt(a2),d3
  945.     muls    d3,d4            ;hele picture size
  946.     muls    d7,d4            ;frame*size d7 !!!
  947.  
  948.     add.l    d4,d4
  949.  
  950.     add.l    d4,d0
  951.  
  952.     move.l    #vew_wid,d5        ;max x view
  953.     move.l    hogscr,d4        ;max y view
  954.     move.w    pic_vew(a2),d1        ;viewmode add
  955.     btst    #2,d1
  956.     beq.s    grappln.nolace
  957.     add.l    d4,d4            ;max y view
  958. grappln.nolace
  959.     btst    #15,d1            ;hires ?
  960.     beq.s    grappln.nohi
  961.     move.l    #vew_wid*2,d5        ;max x view
  962.     bra.s    grappln.noshi
  963. grappln.nohi
  964.     btst    #6,d1            ;super hires ?
  965.     beq.s    grappln.noshi
  966.     move.l    #vew_wid*4,d5        ;max x view
  967. grappln.noshi
  968.  
  969.     moveq.l    #0,d3            ;scherm centreren
  970.     move.w    pic_wid(a2),d3        ;pic breedte in bytes
  971.     cmp.w    d5,d3            ;breder dan scherm ?
  972.     ble.s    grappln.qa
  973.     sub.w    d5,d3            ;-scherm breedte
  974.     lsr.w    #2,d3            ;/4
  975.  
  976.     add.l    d3,d3
  977.  
  978.     add.l    d3,d0
  979. grappln.qa
  980.     move.w    pic_hgt(a2),d3        ;pic hoogte in bytes
  981.     cmp.w    d4,d3            ;hoger dan scherm ?
  982.     ble.s    grappln.qb
  983.     sub.w    d4,d3            ;-scherm breedte
  984.     lsr.w    #1,d3            ;/2
  985.     moveq.l    #0,d5
  986.     move.w    pic_wid(a2),d5        ;pic breedte in bytes
  987.     muls    pic_dpt(a2),d5
  988.     muls    d5,d3
  989.     add.l    d3,d0
  990. grappln.qb
  991.     moveq.l    #0,d2
  992.     move.w    pic_wid(a2),d2
  993.  
  994.     move.w    pic_vew(a2),d5        ;interlace flipping ?
  995.     btst    #2,d5
  996.     beq.s    grappln.nolac7b
  997.  
  998.     move.w    $04(a6),d5        ;even/oneven ?
  999.     btst    #15,d5
  1000.     beq.s    grappln.nolac7b
  1001.     
  1002.     moveq.l    #0,d3
  1003.     move.w    pic_wid(a2),d3
  1004.     muls    pic_dpt(a2),d3
  1005.     add.l    d3,d0
  1006. grappln.nolac7b
  1007.  
  1008.     move.w    pic_dpt(a2),d1        ;plnnummer 1 halen
  1009.     tst.w    d1            ;0 planes ?
  1010.     beq    grappln.end
  1011.     sub.w    #1,d1
  1012. grappln.a
  1013.     move.w    d0,3*2(a0)
  1014.     swap    d0
  1015.     move.w    d0,1*2(a0)
  1016.     swap    d0
  1017.     add.l    d6,a0            ;d6=copper step !
  1018.     add.l    d2,d0
  1019.     dbra    d1,grappln.a
  1020.  
  1021.     cmp.w    #8,pic_dpt(a2)        ;8 planes ?
  1022.     bne    grappln.noham8
  1023.     btst    #3,pic_vew(a2)        ;ham ?
  1024.     beq    grappln.noham8
  1025.  
  1026.     move.w    -14(a0),d0        ;get 6
  1027.     move.w    -10(a0),d1
  1028.     move.w    -6(a0),d2        ;get 7
  1029.     move.w    -2(a0),d3
  1030.     move.w    -18(a0),-2(a0)        ;5>7
  1031.     move.w    -22(a0),-6(a0)        ;5>7
  1032.     move.w    -26(a0),-10(a0)        ;4>6
  1033.     move.w    -30(a0),-14(a0)        ;4>6
  1034.     move.w    -34(a0),-18(a0)        ;3>5
  1035.     move.w    -38(a0),-22(a0)        ;3>5
  1036.     move.w    -42(a0),-26(a0)        ;2>4
  1037.     move.w    -46(a0),-30(a0)        ;2>4
  1038.     move.w    -50(a0),-34(a0)        ;1>3
  1039.     move.w    -54(a0),-38(a0)        ;1>3
  1040.     move.w    -58(a0),-42(a0)        ;0>2
  1041.     move.w    -62(a0),-46(a0)        ;0>2
  1042.     move.w    d0,-62(a0)        ;6>0
  1043.     move.w    d1,-58(a0)        ;6>0
  1044.     move.w    d2,-54(a0)        ;7>1
  1045.     move.w    d3,-50(a0)        ;7>1
  1046. grappln.noham8
  1047.  
  1048. grappln.end
  1049.     movem.l    (sp)+,d0-d7/a0-a6
  1050.     rts
  1051.  
  1052.     ;sets palettes to palette-buffer
  1053.     
  1054. grac
  1055.     movem.l    d0-d7/a0-a6,-(sp)
  1056.  
  1057.     lea    curpal1,a3        ;palette 1
  1058.     move.l    #palette,a1
  1059.     bsr.s    gracfrm
  1060.  
  1061.     lea    curpal2,a3        ;palette 2 (dpl)
  1062.     move.l    #16*4+palette,a1
  1063.     bsr.s    gracfrm
  1064.     
  1065.     bsr    palctr            ;palette-buffer to copper
  1066. grac.end
  1067.     movem.l    (sp)+,d0-d7/a0-a6
  1068.     rts
  1069.         
  1070.     ;moves palette from picture to palette-buffer
  1071.  
  1072. gracfrm
  1073.     movem.l    d0-d7/a0-a6,-(sp)
  1074.     tst.l    (a3)            ;palette aanwezig ?
  1075.     beq.s    gracfrm.end
  1076.  
  1077.     move.l    (a3),a2            ;current palette
  1078.     
  1079.     cmp.l    #'PALE',(a2)        ;palette ?
  1080.     bne.s    gracfrm.pict
  1081.     lea    6(a2),a0        ;palette
  1082.     move.w    4(a2),d0        ;aantal kleuren
  1083.     bra.s    gracfrm.col
  1084. gracfrm.pict
  1085.     cmp.l    #'ANIM',(a2)        ;animatie ?
  1086.     bne.s    gracfrm.noanim
  1087.  
  1088.     moveq.l    #0,d1
  1089.     move.w    pic_ani(a2),d1
  1090.     bclr    #7,d1            ;behandelbit weghalen
  1091.  
  1092.     moveq.l    #0,d3
  1093.     move.w    pic_wid(a2),d3
  1094.     lsr.w    #1,d3            ;/2
  1095.     muls    pic_hgt(a2),d3
  1096.     muls    pic_dpt(a2),d3
  1097.  
  1098.     add.l    d3,d3
  1099.  
  1100.     add.l    #pic_raw,d3
  1101.     move.l    d3,d5
  1102.  
  1103.     btst    #0,d1
  1104.     bne.s    gracfrm.buf2
  1105.     moveq.l    #0,d5
  1106. gracfrm.buf2
  1107.     add.l    d5,a2
  1108. gracfrm.noanim
  1109.     lea    pic_pal(a2),a0        ;palette
  1110.     move.w    pic_palnum(a2),d0
  1111.  
  1112.     tst.w    d0            ;0 planes ?
  1113.     beq.s    gracfrm.end
  1114. gracfrm.col
  1115. gracfrm.fa
  1116.     move.l    (a0)+,(a1)+
  1117.     dbra    d0,gracfrm.fa
  1118. gracfrm.end
  1119.     movem.l    (sp)+,d0-d7/a0-a6
  1120.     rts
  1121.     
  1122.     ;handles colorcycling in the palette-buffer
  1123.  
  1124. palcycctr
  1125.     movem.l    d0-d7/a0-a6,-(sp)
  1126.  
  1127.     move.l    curpic1,a2        ;current raw
  1128.     cmp.l    #0,a2
  1129.     beq.s    palcycctr.qb
  1130.     lea    cycdel1,a3        ;cycle delays
  1131.     move.l    #paltab,a4
  1132.     bsr    palcyc
  1133. palcycctr.qb
  1134.     move.l    curpic2,a2        ;current raw
  1135.     cmp.l    #0,a2
  1136.     beq.s    palcycctr.c
  1137.     lea    cycdel2,a3        ;cycle delays
  1138.     move.l    #16*2+paltab,a4
  1139.     bsr    palcyc
  1140. palcycctr.c
  1141.     movem.l    (sp)+,d0-d7/a0-a6
  1142.     rts
  1143.     
  1144.     ;copies palette-buffer to copper
  1145.  
  1146. palctr
  1147.     movem.l    d0-d7/a0-a6,-(sp)
  1148.  
  1149.     lea    gracprcol,a1        ;AGA
  1150.     move.l    #palette,a0
  1151.     move.l    #paltab,a2
  1152.     move.w    #8-1,d6
  1153. palctr.e
  1154.     move.w    #32-1,d7
  1155. palctr.d
  1156.     move.w    (a2)+,d0            ;get cycle-position
  1157.     move.w    (a0,d0),6(a1)            ;high RGB bits
  1158.     move.w    2(a0,d0),((32+1)*4)+6(a1)    ;low RGB bits
  1159.     add.l    #4,a1
  1160.     dbra    d7,palctr.d
  1161.     add.l    #((32+2)*4),a1
  1162.     dbra    d6,palctr.e
  1163. palctr.end
  1164.     movem.l    (sp)+,d0-d7/a0-a6
  1165.     rts
  1166.  
  1167.     ;reset palette tabel, for proper color cycling
  1168.  
  1169. paltabres
  1170.     movem.l    d0-d7/a0-a6,-(sp)
  1171.     lea    paltab,a0
  1172.     clr.l    d0
  1173.     move.w    #256-1,d1
  1174. paltabres.a
  1175.     move.w    d0,(a0)+
  1176.     add.w    #4,d0            ;aga color words, high RGB + low RGB
  1177.     dbra    d1,paltabres.a
  1178. paltabres.end
  1179.     movem.l    (sp)+,d0-d7/a0-a6
  1180.     rts
  1181.  
  1182.     ;colorcyclinghandling of a palette
  1183.  
  1184. palcyc
  1185.     movem.l    d0-d7/a0-a6,-(sp)
  1186.     move.w    #4-1,d7            ;4 cycles
  1187. palcyc.d
  1188.     tst.w    (a3)+            ;delay klaar ?
  1189.     bne.s    palcyc.c
  1190.     
  1191.     moveq.l    #0,d1
  1192.     move.b    pic_cycstr(a2),d1    ;start color
  1193.     lsl.b    #1,d1        ;*2
  1194.  
  1195.     moveq.l    #0,d2
  1196.     move.b    pic_cycend(a2),d2    ;end color
  1197.     lsl.b    #1,d2        ;*2
  1198.  
  1199.     moveq.l    #0,d3
  1200.     move.b    pic_cycadd(a2),d3    ;richting
  1201.  
  1202.     move.l    a4,a0            ;palette pointer
  1203.     move.l    a0,a1
  1204.     add.l    d1,a0            ;startcolor
  1205.     add.l    d2,a1            ;endcolor
  1206.     
  1207.     cmp.b    #1,d3            ;omhoog
  1208.     beq.s    palcyc.up    
  1209.     cmp.b    #3,d3            ;omlaag
  1210.     beq.s    palcyc.down
  1211.     bra.s    palcyc.i
  1212.  
  1213. palcyc.up                ;kleuren copieren
  1214.     move.w    (a1),d4            ;laatst color bewaren
  1215. palcyc.f                ;kleuren copieren
  1216.     cmp.l    a0,a1
  1217.     beq.s    palcyc.fa
  1218.     move.w    -(a1),2(a1)
  1219.     bra.s    palcyc.f
  1220. palcyc.fa
  1221.     move.w    d4,(a1)
  1222.     bra.s    palcyc.g    
  1223.     
  1224. palcyc.down
  1225.     move.w    (a0),d4            ;laatst color bewaren
  1226. palcyc.h                ;kleuren copieren
  1227.     cmp.l    a0,a1
  1228.     beq.s    palcyc.ha
  1229.     move.w    2(a0),(a0)+
  1230.     bra.s    palcyc.h
  1231. palcyc.ha
  1232.     move.w    d4,(a1)
  1233.  
  1234. palcyc.g
  1235.     move.b    pic_cycspd(a2),-1(a3)    ;delay zetten
  1236.     bra.s    palcyc.i
  1237. palcyc.c
  1238.     sub.w    #1,-2(a3)        ;cycle delay aftellen
  1239. palcyc.i
  1240.     add.l    #4,a2            ;next cycle info
  1241.     dbra    d7,palcyc.d
  1242.  
  1243. palcyc.qb
  1244.     movem.l    (sp)+,d0-d7/a0-a6
  1245.     rts
  1246.  
  1247.  
  1248.  
  1249. ;    SECTION    variabelen,DATA_c
  1250.  
  1251.     cnop    0,2
  1252. curtsk        dc.l    0
  1253. tskpri        dc.l    0
  1254. duplok        dc.l    0
  1255. inttel        dc.l    0
  1256. intdel        dc.l    0
  1257.  
  1258. form        dc.l    0
  1259. ifffil        dc.l    0
  1260. intvbold    dc.l    0
  1261. inttbeold    dc.l    0
  1262. patpos        dc.l    0
  1263. gfxlib        dc.l    0
  1264. doslib        dc.l    0
  1265. wbview      dc.l    0
  1266. mt_data        dc.l    0
  1267. memvid        dc.l    0
  1268. oldcprlist    dc.l    0
  1269. hogscr        dc.l    vew_hgt
  1270.  
  1271. inspos        dc.l    -1
  1272. anispd1        dc.w    1    ;nooit op 0 !
  1273. anispd2        dc.w    1
  1274.  
  1275.         cnop    0,2
  1276. varclr.s            ;start wissen
  1277. oldrot        dc.l    0
  1278. curpic        dc.l    0
  1279. curfrm        dc.l    0
  1280. cycdel1        ds.w    4
  1281. cycdel2        ds.w    4
  1282.  
  1283. rotinf1        dc.w    0
  1284. rotinf2        dc.w    0
  1285.  
  1286. effspd        dc.w    0
  1287. efflop        dc.b    0
  1288. anilop1        dc.b    0
  1289. anilop2        dc.b    0
  1290. anipal1        dc.b    0
  1291. anipal2        dc.b    0
  1292. rotdpl        dc.b    1
  1293. rottrg        dc.b    0
  1294. dplctr        dc.b    0
  1295.         cnop    0,2
  1296.  
  1297. insdat        ds.l    4
  1298. inspri        dc.l    0
  1299. instel        dc.w    0
  1300.  
  1301. cureff        dc.l    0
  1302. efftel        dc.w    0
  1303.  
  1304. curpal1        dc.l    0
  1305. curpal2        dc.l    0
  1306. currot1        dc.l    0
  1307. currot2        dc.l    0
  1308. curpic1        dc.l    0
  1309. curpic2        dc.l    0
  1310. anitel1        dc.w    0
  1311. anitel2        dc.w    0
  1312. curfrm1        dc.l    0
  1313. curfrm2        dc.l    0
  1314. oldfrm1        dc.l    0
  1315. oldfrm2        dc.l    0
  1316.  
  1317. varclr.e
  1318.         dc.l    0            ;wisruimte
  1319.     
  1320. varclr.ql    equ    varclr.e-varclr.s    ;wislengte
  1321.     
  1322. ntscmode    dc.b    0
  1323. end        dc.b    0
  1324.  
  1325. pronam    dc.b    'VideoTracker',0
  1326.     cnop    0,2
  1327. dosnam    dc.b    'dos.library',0
  1328.     cnop    0,4
  1329. gfxnam    dc.b    'graphics.library',0
  1330.     cnop    0,4
  1331.     
  1332.     cnop    0,4
  1333. gra.s            ;copperlist edit buffer
  1334. gracprscr
  1335.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1336. gracprbpl
  1337.     dc.w    $100,$0000,$102,$0000,$104,$0020
  1338.     dc.w    $108,$0000,$10a,$0000,$1fc,$0003
  1339. gracprpln
  1340.     dc.w    $e0,$0000,$e2,$0000    ;1
  1341.     dc.w    $e4,$0000,$e6,$0000    ;2
  1342.     dc.w    $e8,$0000,$ea,$0000    ;3
  1343.     dc.w    $ec,$0000,$ee,$0000    ;4
  1344.     dc.w    $f0,$0000,$f2,$0000    ;5
  1345.     dc.w    $f4,$0000,$f6,$0000    ;6
  1346.     dc.w    $f8,$0000,$fa,$0000    ;7
  1347.     dc.w    $fc,$0000,$fe,$0000    ;8
  1348. gracprcol
  1349.     dc.w    $106,$0000
  1350.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1351.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1352.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1353.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1354.     dc.w    $106,$0200
  1355.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1356.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1357.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1358.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1359.  
  1360.     dc.w    $106,$2000
  1361.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1362.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1363.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1364.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1365.     dc.w    $106,$2200
  1366.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1367.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1368.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1369.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1370.  
  1371.     dc.w    $106,$4000
  1372.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1373.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1374.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1375.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1376.     dc.w    $106,$4200
  1377.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1378.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1379.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1380.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1381.  
  1382.     dc.w    $106,$6000
  1383.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1384.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1385.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1386.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1387.     dc.w    $106,$6200
  1388.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1389.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1390.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1391.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1392.  
  1393.     dc.w    $106,$8000
  1394.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1395.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1396.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1397.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1398.     dc.w    $106,$8200
  1399.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1400.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1401.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1402.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1403.  
  1404.     dc.w    $106,$a000
  1405.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1406.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1407.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1408.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1409.     dc.w    $106,$a200
  1410.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1411.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1412.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1413.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1414.  
  1415.     dc.w    $106,$c000
  1416.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1417.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1418.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1419.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1420.     dc.w    $106,$c200
  1421.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1422.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1423.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1424.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1425.  
  1426.     dc.w    $106,$e000
  1427.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1428.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1429.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1430.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1431.     dc.w    $106,$e200
  1432.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1433.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1434.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1435.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1436.  
  1437.     dc.w    $106,$1000
  1438.  
  1439. cprjmp
  1440.     dc.w    $080,0,$082,0
  1441. gra.e
  1442. gra.ql    equ    gra.e-gra.s        ;block lengte
  1443.  
  1444. cpr                    ;real copperlist
  1445.     dc.w    $0001,$fffe
  1446.     dc.w    $09c,$8001        ;tbeint
  1447. cprspr
  1448.     dc.w    $120,$0000,$122,$0000
  1449.     dc.w    $124,$0000,$126,$0000
  1450.     dc.w    $128,$0000,$12a,$0000
  1451.     dc.w    $12c,$0000,$12e,$0000
  1452.     dc.w    $130,$0000,$132,$0000
  1453.     dc.w    $134,$0000,$136,$0000
  1454.     dc.w    $138,$0000,$13a,$0000
  1455.     dc.w    $13c,$0000,$13e,$0000
  1456.  
  1457. cprbuf
  1458.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1459.     dc.w    $100,$9000,$102,$0000,$104,$0020
  1460.     dc.w    $108,$0000,$10a,$0000,$1fc,$0003
  1461.  
  1462.     dc.w    $e0,$0000,$e2,$0000    ;0
  1463.     dc.w    $e4,$0000,$e6,$0000    ;1
  1464.     dc.w    $e8,$0000,$ea,$0000    ;2
  1465.     dc.w    $ec,$0000,$ee,$0000    ;3
  1466.     dc.w    $f0,$0000,$f2,$0000    ;4
  1467.     dc.w    $f4,$0000,$f6,$0000    ;5
  1468.     dc.w    $f8,$0000,$fa,$0000    ;6
  1469.     dc.w    $fc,$0000,$fe,$0000    ;7
  1470.  
  1471.     dc.w    $106,$0000
  1472.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1473.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1474.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1475.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1476.     dc.w    $106,$0200
  1477.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1478.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1479.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1480.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1481.  
  1482.     dc.w    $106,$2000
  1483.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1484.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1485.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1486.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1487.     dc.w    $106,$2200
  1488.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1489.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1490.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1491.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1492.  
  1493.     dc.w    $106,$4000
  1494.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1495.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1496.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1497.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1498.     dc.w    $106,$4200
  1499.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1500.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1501.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1502.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1503.  
  1504.     dc.w    $106,$6000
  1505.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1506.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1507.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1508.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1509.     dc.w    $106,$6200
  1510.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1511.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1512.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1513.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1514.  
  1515.     dc.w    $106,$8000
  1516.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1517.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1518.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1519.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1520.     dc.w    $106,$8200
  1521.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1522.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1523.      dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1524.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1525.  
  1526.     dc.w    $106,$a000
  1527.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1528.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1529.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1530.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1531.     dc.w    $106,$a200
  1532.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1533.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1534.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1535.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1536.  
  1537.     dc.w    $106,$c000
  1538.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1539.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1540.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1541.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1542.     dc.w    $106,$c200
  1543.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1544.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1545.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1546.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1547.  
  1548.     dc.w    $106,$e000
  1549.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1550.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1551.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1552.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1553.     dc.w    $106,$e200
  1554.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1555.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1556.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1557.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1558.  
  1559.     dc.w    $106,$1000
  1560.  
  1561.     dc.w    $080,0,$082,0
  1562. cprbuf.e
  1563.  
  1564.     dc.w    $088,$0000        ;copjmp2
  1565.     dc.w    $080,0,$082,0        ;moet achter cprbck blijven !
  1566. cprbck
  1567. sprdat
  1568.     dc.w    $ffff,$fffe
  1569.  
  1570. palette        ds.l    256        ;palette 24-bits, far out !
  1571. paltab        ds.w    256        ;palette cycle-tabel
  1572.  
  1573.     cnop    0,2
  1574. var    ds.b    $300    ;variabelen voor routines
  1575.  
  1576.     
  1577. ;    SECTION    10,CODE_C
  1578.         endc
  1579.  
  1580. ; this is the routine-source
  1581. ;**********************************************************************
  1582.  
  1583. ;    a0=variabelen tabel
  1584. ;    d0=routinfo
  1585.  
  1586. rotbigscroll
  1587. ;ntscver
  1588.  
  1589. rots_high    equ    0;$8000
  1590. rots_lace    equ    0;$0004
  1591. rots_vew    equ    rots_high+rots_lace
  1592. rots_dpt    equ    3
  1593. rots_del    equ    0
  1594.  
  1595.         ifeq    rots_high-0
  1596. rotv_wid    equ    (48/1)        ;actual view lores
  1597.         ifd    ocs
  1598. rots_cen    equ    0
  1599.         endc
  1600.         ifnd    ocs
  1601. rots_cen    equ    8
  1602.         endc
  1603.         endc
  1604.         ifeq    rots_high-$8000
  1605.         ifd    ocs
  1606. rotv_wid    equ    (96/1)        ;actual view hires
  1607. rots_cen    equ    8
  1608.         endc
  1609.         ifnd    ocs
  1610. rotv_wid    equ    (96/1)        ;actual view hires
  1611. rots_cen    equ    0
  1612.         endc
  1613.         endc
  1614.     
  1615.         ifnd    ntscver
  1616.         ifeq    rots_lace-0
  1617. rotv_hgt    equ    290+64            ;actual view nolace
  1618.         endc
  1619.         ifeq    rots_lace-4
  1620. rotv_hgt    equ    (290*2)+64        ;actual view lace
  1621.         endc
  1622.         endc
  1623.         ifd    ntscver
  1624.         ifeq    rots_lace-0
  1625. rotv_hgt    equ    290+64-56        ;actual view nolace
  1626.         endc
  1627.         ifeq    rots_lace-4
  1628. rotv_hgt    equ    ((290-56)*2)+64        ;actual view lace
  1629.         endc
  1630.         endc
  1631.         
  1632.         ifeq    rots_vew-0        ;lo-res
  1633.  
  1634.         ifeq    rots_dpt-1
  1635.         ifnd    ntscver
  1636. rotc_hgtx    equ    160            ;maximale characterhoogte
  1637. rotc_hgty    equ    80+8            ;maximale characterhoogte
  1638. rots_scrwid    equ    (0/1)            ;aantal -bytes voor y-scroll
  1639.         endc
  1640.         ifd    ntscver
  1641. rotc_hgtx    equ    144            ;maximale characterhoogte
  1642. rotc_hgty    equ    24+8            ;maximale characterhoogte
  1643. rots_scrwid     equ    16            ;aantal -bytes voor y-scroll
  1644.         endc
  1645.         endc
  1646.  
  1647.         ifeq    rots_dpt-2
  1648. rotc_hgtx    equ    80            ;maximale characterhoogte
  1649. rotc_hgty    equ    88+8            ;maximale characterhoogte
  1650. rots_scrwid     equ    (0/1)            ;aantal -bytes voor y-scroll
  1651.         endc
  1652.  
  1653.         ifeq    rots_dpt-3
  1654.         ifnd    rotbigscroll
  1655.         ifnd    ntscver
  1656. rotc_hgtx    equ    36            ;maximale characterhoogte
  1657. rotc_hgty    equ    40+8            ;maximale characterhoogte
  1658. rots_scrwid    equ    8            ;aantal -bytes voor y-scroll
  1659.         endc
  1660.         ifd    ntscver
  1661. rotc_hgtx    equ    16            ;maximale characterhoogte
  1662. rotc_hgty    equ    16+8            ;maximale characterhoogte
  1663. rots_scrwid    equ    8            ;aantal -bytes voor y-scroll
  1664.         endc
  1665.         endc
  1666.         ifd    rotbigscroll
  1667.         ifnd    ntscver
  1668. rotc_hgtx    equ    80            ;maximale characterhoogte
  1669. rotc_hgty    equ    88+8            ;maximale characterhoogte
  1670. rots_scrwid    equ    0            ;aantal -bytes voor y-scroll
  1671.         endc
  1672.         ifd    ntscver
  1673. rotc_hgtx    equ    110            ;maximale characterhoogte
  1674. rotc_hgty    equ    88+8            ;maximale characterhoogte
  1675. rots_scrwid    equ    0            ;aantal -bytes voor y-scroll
  1676.         endc
  1677.         endc
  1678.         endc
  1679.  
  1680.         ifeq    rots_dpt-4
  1681.         ifnd    ntscver
  1682. rotc_hgtx    equ    56            ;maximale characterhoogte
  1683. rotc_hgty    equ    56+8            ;maximale characterhoogte
  1684. rots_scrwid    equ    (0/1)            ;aantal -bytes voor y-scroll
  1685.         endc
  1686.         ifd    ntscver
  1687. rotc_hgtx    equ    40            ;maximale characterhoogte
  1688. rotc_hgty    equ    40+8            ;maximale characterhoogte
  1689. rots_scrwid    equ    (0/1)            ;aantal -bytes voor y-scroll
  1690.         endc
  1691.         endc
  1692.  
  1693.         ifeq    rots_dpt-5
  1694.         ifnd    ntscver
  1695. rotc_hgtx    equ    36            ;maximale characterhoogte
  1696. rotc_hgty    equ    40+8            ;maximale characterhoogte
  1697. rots_scrwid    equ    (0/1)            ;aantal -bytes voor y-scroll
  1698.         endc
  1699.         ifd    ntscver
  1700. rotc_hgtx    equ    32            ;maximale characterhoogte
  1701. rotc_hgty    equ    40+8            ;maximale characterhoogte
  1702. rots_scrwid    equ    (0/1)            ;aantal -bytes voor y-scroll
  1703.         endc
  1704.         endc
  1705.         endc
  1706.     
  1707.         ifeq    rots_vew-$8004        ;hi-res interlace
  1708.         ifeq    rots_dpt-1
  1709. rotc_hgtx    equ    80            ;maximale characterhoogte
  1710. rotc_hgty    equ    56+8            ;maximale characterhoogte
  1711. rots_scrwid    equ    16            ;aantal -bytes voor y-scroll
  1712.         endc
  1713.  
  1714.         ifeq    rots_dpt-2
  1715.         ifnd    ntscver
  1716. rotc_hgtx    equ    72            ;maximale characterhoogte
  1717. rotc_hgty    equ    72+8            ;maximale characterhoogte
  1718. rots_scrwid    equ    16            ;aantal -bytes voor y-scroll
  1719.         endc
  1720.         ifd    ntscver
  1721. rotc_hgtx    equ    48            ;maximale characterhoogte
  1722. rotc_hgty    equ    48+8            ;maximale characterhoogte
  1723. rots_scrwid    equ    16            ;aantal -bytes voor y-scroll
  1724.         endc
  1725.         endc
  1726.  
  1727.         ifeq    rots_dpt-3
  1728. rotc_hgtx    equ    48            ;maximale characterhoogte
  1729. rotc_hgty    equ    48+8            ;maximale characterhoogte
  1730. rots_scrwid    equ    16            ;aantal -bytes voor y-scroll
  1731.         endc
  1732.  
  1733.         ifeq    rots_dpt-4
  1734. rotc_hgtx    equ    48            ;maximale characterhoogte
  1735. rotc_hgty    equ    48+8            ;maximale characterhoogte
  1736. rots_scrwid    equ    16            ;aantal -bytes voor y-scroll
  1737.         endc
  1738.         endc
  1739.     
  1740.         ifd    ocs
  1741. rotc_wid    equ    ((rotc_hgtx*2)+15)/16*2    ;maximale characterbreedte
  1742.         endc
  1743.         ifnd    ocs
  1744. rotc_wid    equ    ((rotc_hgtx*2)+15)/64*8    ;maximale characterbreedte
  1745.         endc
  1746.  
  1747. rots_hgt    equ    (rotv_hgt+(2*rotc_hgty))
  1748. rots_wid    equ    (rotv_wid+(2*rotc_wid))
  1749. rots_blit    equ    8            ;aantal -bytes voor y-scroll
  1750.  
  1751.  
  1752.     SECTION    3,CODE
  1753.     cnop    0,8
  1754. rot
  1755. rotpub
  1756.     ifd    ocs
  1757.     dc.l    'ROTO'
  1758.     endc
  1759.     ifnd    ocs
  1760.     dc.l    'ROTA'
  1761.     endc
  1762.     movem.l    d3-d7/a1-a6,-(sp)
  1763.  
  1764.     lea    ($dff000).l,a6    ;hardware
  1765.     lea    rot,a5        ;prog base
  1766.     ifd    rout
  1767.     move.l    #rotc,a2
  1768.     endc
  1769.     move.l    a2,rotchp-rot(a5)
  1770.  
  1771. ;    ifeq    rots_dpt-1
  1772. ;    eor.l    #rotpic2-rotpic1,rotdub-rot(a5)
  1773. ;    endc
  1774.     
  1775.     move.l    a0,rotvar-rot(a5)    ;var table
  1776.     moveq.l    #0,d1        ;info ombouwen
  1777.  
  1778.     bsr    rotfonset        ;set current font
  1779.     lea    var_txt1(a0),a0
  1780.  
  1781.     move.l    #0,d2        ;test bit
  1782.     lea    rottnew,a1        ;new text
  1783.     lea    rottpos,a2        ;pos text
  1784.     lea    rotscr,a4        ;rout scroll
  1785.     bsr    rotctr
  1786.  
  1787.     move.l    rotchp-rot(a5),a0
  1788.     add.l    #rotpic1-rotc,a0
  1789.     add.l    rotdub-rot(a5),a0
  1790.     moveq.l    #0,d1
  1791.  
  1792. ;    ifne    rots_dpt-1
  1793.     eor.l    #rotpic2-rotpic1,rotdub-rot(a5)
  1794. ;    endc
  1795.     
  1796.     move.l    #rots_del,d2    ;interrupt delay
  1797.     cmp.l    #3,rotmod-rot(a5)    ;y scroll ?
  1798.     beq    rotstr.y
  1799.     cmp.l    #4,rotmod-rot(a5)    ;y scroll ?
  1800.     beq    rotstr.y
  1801.     moveq.l    #0,d2        ;no delay
  1802. rotstr.y
  1803.     movem.l    (sp)+,d3-d7/a1-a6
  1804.     rts
  1805.  
  1806. rotctr
  1807.     move.l    (a0)+,d0
  1808.     tst.l    d0
  1809.     beq    rotctr.end        ;leeg ?
  1810.  
  1811.     cmp.l    (a1),d0        ;zelfde text ?
  1812.     beq    rotctr.aa
  1813.     move.l    d0,(a1)        ;nieuwe text
  1814.     move.l    d0,(a2)        ;start text
  1815. rotctr.aa
  1816.     jsr    (a4)        ;scrollen
  1817. rotctr.end
  1818.     rts
  1819.     
  1820. rotchg                ;change font (a2 komt terug)
  1821.     movem.l    d0-d7/a0/a1/a3-a6,-(sp)
  1822.  
  1823.     move.b    (a2)+,d1
  1824.     bsr    rotnum        ;a2=string = d0=nummer
  1825.  
  1826.     cmp.b    #'F',d1
  1827.     beq    rotchg.bb
  1828.     cmp.b    #'f',d1
  1829.     beq    rotchg.bb
  1830.  
  1831.     cmp.b    #'C',d1
  1832.     beq    rotchg.c
  1833.     cmp.b    #'c',d1
  1834.     beq    rotchg.c
  1835.  
  1836.     cmp.b    #'S',d1
  1837.     beq    rotchg.d
  1838.     cmp.b    #'s',d1
  1839.     beq    rotchg.d
  1840.  
  1841.     cmp.b    #'M',d1
  1842.     beq    rotchg.e
  1843.     cmp.b    #'m',d1
  1844.     beq    rotchg.e
  1845.  
  1846.     cmp.b    #'X',d1
  1847.     beq    rotchg.f
  1848.     cmp.b    #'x',d1
  1849.     beq    rotchg.f
  1850.  
  1851.     cmp.b    #'Y',d1
  1852.     beq    rotchg.g
  1853.     cmp.b    #'y',d1
  1854.     beq    rotchg.g
  1855.  
  1856.     cmp.b    #'E',d1
  1857.     beq    rotchg.h
  1858.     cmp.b    #'e',d1
  1859.     beq    rotchg.h
  1860.  
  1861.     cmp.b    #'D',d1
  1862.     beq    rotchg.i
  1863.     cmp.b    #'d',d1
  1864.     beq    rotchg.i
  1865.  
  1866.     bra    rotchg.end
  1867.  
  1868. rotchg.bb                ;change font
  1869. ;    lsl.l    #2,d0        ;*4
  1870.     add.l    d0,d0
  1871.     add.l    d0,d0
  1872.     
  1873.     move.l    d0,rotc_fonnum-rot(a5)
  1874.     bsr    rotfonset
  1875.     bra    rotchg.end
  1876.     
  1877. rotchg.c                ;change color
  1878.     move.l    d0,rotcol-rot(a5)
  1879.     bra    rotchg.end
  1880.     
  1881. rotchg.d                ;change speed
  1882.     move.l    d0,rotspd-rot(a5)
  1883.     bra    rotchg.end
  1884.     
  1885. rotchg.e                ;change mode
  1886.     move.l    d0,rotmod-rot(a5)
  1887.     bra    rotchg.end
  1888.     
  1889. rotchg.f                ;change x pos
  1890.     add.l    #rotc_wid*8,d0
  1891.     move.l    d0,rotpsx-rot(a5)
  1892.     bra    rotchg.end
  1893.     
  1894. rotchg.g                ;change y pos
  1895.     add.l    #rotc_hgty,d0
  1896.     move.l    #rotv_hgt+rotc_hgty,d1    ;max check
  1897.     cmp.w    d1,d0
  1898.     ble    rotchg.ga
  1899.     move.l    d1,d0
  1900. rotchg.ga
  1901.     move.l    d0,rotpsy-rot(a5)
  1902.     bra    rotchg.end
  1903.     
  1904. rotchg.h                ;screenclear
  1905. ;    lea    rotpln1,a1
  1906. ;    move.l    #rots_hgt*rots_wid*rots_dpt,d0
  1907. ;    move.l    rotvar-rot(a5),a0    ;vartab
  1908. ;    move.l    var_gfxlib(a0),a6    ;graphics lib halen
  1909. ;    move.l    #$0000,d1        ;fill ?
  1910. ;    movem.l    d0-d7/a0-a6,-(sp)
  1911. ;    jsr    -$12c(a6)        ;blitter clear scherm 1
  1912. ;    movem.l    (sp)+,d0-d7/a0-a6
  1913. ;    bsr    rotwit        ;blitwait
  1914. ;    lea    rotpln1,a1
  1915. ;    add.l    #rotpln2-rotpln1,a1
  1916. ;    movem.l    d0-d7/a0-a6,-(sp)
  1917. ;    jsr    -$12c(a6)        ;blitter clear scherm 1
  1918. ;    movem.l    (sp)+,d0-d7/a0-a6
  1919. ;    bsr    rotwit        ;blitwait
  1920.  
  1921.     move.l    rotchp-rot(a5),a0
  1922.     add.l    #rotpln1-rotc,a0
  1923.     add.l    #(rots_wid-rotv_wid)/2,a0    ;xstart
  1924.     add.l    #rotc_hgty*rots_wid*rots_dpt,a0    ;ystart
  1925.  
  1926.     move.l    rotdub-rot(a5),d0
  1927.     add.l    d0,a0            ;destination
  1928.  
  1929.     move.l    #rotv_hgt/rots_blit,d5 ;in rots_blit stappen
  1930.  
  1931.     muls    #rots_dpt,d5
  1932.     move.l    d5,d1
  1933.     muls    #rots_wid,d1
  1934.     lsl.l    #6,d5            ;*64
  1935.     add.l    #(rotv_wid)/2,d5
  1936.  
  1937.     move.w    #0,$042(a6)
  1938.     move.w    #$100+$f0,$040(a6)
  1939.  
  1940.     move.w    #rots_wid-rotv_wid,$064(a6)
  1941.     move.w    #rots_wid-rotv_wid,$066(a6)
  1942.  
  1943. ;    move.w    #0,$070(a6)        ;c dat
  1944. ;    move.w    #0,$072(a6)        ;b dat
  1945.  
  1946.     move.w    #0,$074(a6)        ;a dat
  1947.  
  1948.     move.l    #0,$044(a6)        ;mask
  1949.  
  1950.     move.w    #rots_blit-1,d0
  1951. rotchg.blit
  1952.     move.l    a0,$054(a6)        ;destination
  1953.     move.w    d5,$058(a6)
  1954.     bsr    rotwit
  1955.  
  1956.     add.l    d1,a0
  1957.     dbra    d0,rotchg.blit
  1958.  
  1959.     bra    rotchg.end
  1960.  
  1961. rotchg.i                ;set delay
  1962.     move.l    d0,rotdel-rot(a5)
  1963.     bra    rotchg.end
  1964.     
  1965. rotchg.end
  1966.     movem.l    (sp)+,d0-d7/a0/a1/a3-a6
  1967.     rts
  1968.  
  1969. rotchgc                ;change font (a2 komt terug)
  1970.     movem.l    d0-d7/a0/a1/a3-a6,-(sp)
  1971.  
  1972.     move.b    (a2)+,d1
  1973.     bsr    rotnum
  1974.  
  1975.     cmp.b    #'F',d1        ;fontchange
  1976.     beq    rotchgc.bb
  1977.     cmp.b    #'f',d1
  1978.     beq    rotchgc.bb
  1979.  
  1980.     cmp.b    #'R',d1        ;reverse centreren
  1981.     beq    rotchgc.j
  1982.     cmp.b    #'r',d1
  1983.     beq    rotchgc.j
  1984.  
  1985.     bra    rotchgc.end
  1986.  
  1987. rotchgc.bb                ;change font
  1988. ;    lsl.l    #2,d0        ;*4
  1989.     add.l    d0,d0
  1990.     add.l    d0,d0
  1991.  
  1992.     move.l    d0,rotc_fonnum-rot(a5)
  1993.     bsr    rotfonset
  1994.     bra    rotchgc.end
  1995.     
  1996. rotchgc.j                ;reverse centering
  1997.     add.l    #rotc_wid*8,d0
  1998.     move.l    d0,rotrev-rot(a5)
  1999.     bra    rotchgc.end
  2000.     
  2001. rotchgc.end
  2002.     movem.l    (sp)+,d0-d7/a0/a1/a3-a6
  2003.     rts
  2004.  
  2005. rotfonset                ;set current font
  2006.     movem.l    d0-d7/a0-a6,-(sp)
  2007.  
  2008.     move.l    rotvar-rot(a5),a1    ;vartab
  2009.     add.l    rotc_fonnum-rot(a5),a1    ;fontnummer
  2010.     move.l    var_fon1(a1),a2    ;fonttabel
  2011.  
  2012.     clr.l    rotc_fon-rot(a5)    ;huidige font wissen
  2013.  
  2014.     cmp.l    #'FONT',(a2)    ;is ut fontje ?
  2015.     bne    rotfonset.end
  2016.  
  2017.     move.l    a2,rotc_fon-rot(a5)    ;huidige font zetten
  2018.  
  2019. ;    move.l    fon_wid(a2),rotc_maxx-rot(a5)
  2020. rotfonset.bb
  2021.  
  2022. rotfonset.end
  2023.     movem.l    (sp)+,d0-d7/a0-a6
  2024.     rts
  2025.  
  2026. rotscr
  2027.     movem.l    d0-d7/a0-a6,-(sp)
  2028.  
  2029.     tst.l    rotdel-rot(a5)    ;delay ?
  2030.     beq    rotscr.nodel
  2031.     sub.l    #1,rotdel-rot(a5)    ;delay aftellen
  2032. rotscr.nodel
  2033.  
  2034.     tst.l    rottnew-rot(a5)    ;leeg text ?
  2035.     bne    rotscr.a
  2036.     tst.l    rottpos-rot(a5)    ;leeg text ?
  2037.     beq    rotscr.end
  2038.     clr.l    rottpos-rot(a5)
  2039.     bra    rotscr.end
  2040.  
  2041. rotscr.a
  2042.     cmp.l    #3,rotmod-rot(a5)    ;y scroll ?
  2043.     beq    rotscr.y
  2044.     cmp.l    #4,rotmod-rot(a5)    ;y scroll ?
  2045.     bne    rotscr.noy
  2046. rotscr.y
  2047.     bsr    roty
  2048.     bra    rotscr.end
  2049. rotscr.noy
  2050.     cmp.l    #5,rotmod-rot(a5)    ;page ?
  2051.     bne    rotscr.nop
  2052.     bsr    rotp
  2053.     bra    rotscr.end
  2054. rotscr.nop
  2055.     clr.l    rotchrn-rot(a5)    ;geen geblerk met y
  2056.     bsr    rotx        ;x scroll
  2057. rotscr.end
  2058.     movem.l    (sp)+,d0-d7/a0-a6
  2059.     rts
  2060.     
  2061.  
  2062.  
  2063.  
  2064.  
  2065. rotp
  2066.     movem.l    d0-d7/a0-a6,-(sp)        ;page
  2067.     
  2068.     tst.l    rotc_fon-rot(a5)        ;font leeg ?
  2069.     beq    rotp.end
  2070.     move.l    rotc_fon-rot(a5),a1
  2071.  
  2072.     move.l    rotchp-rot(a5),a2
  2073.     add.l    #rotpln1-rotc,a2
  2074.     add.l    #(rots_wid-rotv_wid)/2,a2;xstart
  2075.     add.l    #rotc_hgty*rots_wid*rots_dpt,a2    ;ystart
  2076.     move.l    a2,a0            ;destination
  2077.  
  2078.     move.l    rotdub-rot(a5),d0
  2079.     add.l    d0,a0            ;destination
  2080.     eor.l    #rotpic2-rotpic1,d0
  2081.     add.l    d0,a2            ;source
  2082.  
  2083.     move.l    #rotv_hgt/rots_blit,d5 ;in rots_blit stappen
  2084.  
  2085.     muls    #rots_dpt,d5
  2086.     move.l    d5,d1
  2087.     muls    #rots_wid,d1
  2088.     lsl.l    #6,d5            ;*64
  2089.     add.l    #(rotv_wid)/2,d5
  2090.  
  2091. ;    move.w    #$4000,$09a(a6)    ;masterinterrupt
  2092.  
  2093.     move.w    #0,$042(a6)
  2094.     move.w    #$900+$f0,$040(a6)
  2095.  
  2096.     move.w    #rots_wid-rotv_wid,$064(a6)
  2097.     move.w    #rots_wid-rotv_wid,$066(a6)
  2098.     move.w    #%1111111111111111,$044(a6)
  2099.     move.w    #%1111111111111111,$046(a6)
  2100.  
  2101.     move.w    #rots_blit-1,d0
  2102. rotp.blit
  2103.     move.l    a2,$050(a6)        ;source
  2104.     move.l    a0,$054(a6)        ;destination
  2105.     move.w    d5,$058(a6)
  2106.     bsr    rotwit
  2107. ;    move.w    #$c000,$09a(a6)    ;masterinterrupt
  2108.  
  2109.     add.l    d1,a0
  2110.     add.l    d1,a2
  2111.     dbra    d0,rotp.blit
  2112.  
  2113.     tst.l    rotdel-rot(a5)    ;delay ?
  2114.     bne    rotp.end
  2115.  
  2116. rotp.char
  2117.     move.l    rottpos-rot(a5),a2    ;textpos
  2118.     move.l    #8,rotmaxr-rot(a5)    ;max regelhoogte wissen
  2119.  
  2120.     lea    fon_widtab(a1),a3
  2121.     moveq.l    #0,d1        ;text lengte
  2122.     moveq.l    #0,d2        ;aantal chars
  2123.     moveq.l    #0,d3        ;reverse
  2124. rotp.a                ;text lengte tellen
  2125.     tst.b    (a2)+        ;einde text ?
  2126.     beq    rotp.bb
  2127.     cmp.b    #$a,-1(a2)
  2128.     beq    rotp.bb
  2129.  
  2130.     moveq.l    #0,d7
  2131.     move.b    -1(a2),d7
  2132.     cmp.b    #'_',d7
  2133.     bne    rotp.nocom
  2134.  
  2135.     bsr    rotchgc        ;handle command
  2136.  
  2137.     tst.l    rotrev-rot(a5)    ;reverse centreren ?
  2138.     beq    rotp.norev
  2139.     move.l    rotrev-rot(a5),d0    ;reverse punt
  2140.     clr.l    rotrev-rot(a5)    ;reverse wissen
  2141.     sub.l    d1,d0        ;-huidige lengte
  2142.     cmp.w    #0,d0
  2143.     bge    rotp.revk
  2144.     moveq.l    #0,d0
  2145. rotp.revk
  2146.     move.l    d0,d3
  2147.  
  2148. rotp.norev
  2149.     tst.l    rotc_fon-rot(a5)    ;font opnieuw halen
  2150.     beq    rotp.end
  2151.     move.l    rotc_fon-rot(a5),a1
  2152.     lea    fon_widtab(a1),a3
  2153.     bra    rotp.a
  2154.  
  2155. rotp.nocom
  2156.     move.l    fon_hgt(a1),d0
  2157.     cmp.w    2+rotmaxr-rot(a5),d0    ;maxy check
  2158.     blt    rotp.notbigger2
  2159.     move.l    d0,rotmaxr-rot(a5)
  2160. rotp.notbigger2
  2161.  
  2162. ;    lsl.l    #1,d7
  2163.     add.l    d7,d7
  2164.  
  2165.     add.w    (a3,d7),d1        ;breedte karakter optellen
  2166.     add.l    #1,d2        ;aantal karakters
  2167.     bra    rotp.a
  2168.  
  2169.  
  2170. rotp.bb
  2171.     cmp.l    #(rotv_wid)*8,d1    ;beeld breedte
  2172.     ble    rotp.cx
  2173.     move.l    #(rotv_wid)*8,d1
  2174. rotp.cx
  2175.     tst.l    d3        ;reverse centreren ?
  2176.     beq    rotp.mid 
  2177.     move.l    d3,rotpsx-rot(a5)
  2178.     bra    rotp.rev
  2179.  
  2180. rotp.mid
  2181.     move.l    #(rots_wid+rots_cen)*4,d5    ;beeld breedte
  2182.     lsr.l    #1,d1        ;/2
  2183.     sub.l    d1,d5        ;xpos
  2184.     move.l    d5,rotpsx-rot(a5)
  2185. rotp.rev
  2186.  
  2187.     move.l    d2,rotchrn-rot(a5)    ;aantal characters
  2188.     move.l    rotmaxr-rot(a5),d0    ;hoogte regel
  2189.     move.l    rotspd-rot(a5),d1    ;snelheid
  2190.     add.l    #1,d1
  2191.     divs    d1,d0        ;hoogte/snelheid
  2192.     and.l    #$ffff,d0
  2193.     divs    d0,d2        ;aantal chars/(hoogte/snelheid)
  2194.     add.w    #1,d2
  2195.     move.w    d2,2+rotchrvb-rot(a5)    ;aantal per vb
  2196.  
  2197.     clr.l    rotchrp-rot(a5)
  2198. rotp.print
  2199.     lea    fon_widtab(a1),a3
  2200.  
  2201.     move.l    rotchp-rot(a5),a0
  2202.     add.l    #rotpln1-rotc,a0        ;text printen
  2203.     add.l    rotdub-rot(a5),a0
  2204.  
  2205.     move.l    rotchrvb-rot(a5),d1    ;aantal chars per keer
  2206.     move.l    rottpos-rot(a5),a2    ;textpos
  2207.     move.l    rotchrp-rot(a5),d3    ;hoogte aanpassing
  2208.  
  2209.     move.l    rotspd-rot(a5),d0
  2210.     add.l    #1,d0
  2211.     muls    d0,d3
  2212.  
  2213.     add.l    #1,rotchrp-rot(a5)
  2214. rotp.c
  2215.     tst.b    (a2)+
  2216.     beq    rotp.gb
  2217.     cmp.b    #$a,-1(a2)
  2218.     beq    rotp.d
  2219.  
  2220.     moveq.l    #0,d7
  2221.     move.b    -1(a2),d7
  2222.  
  2223.     cmp.b    #'_',d7
  2224.     bne    rotp.nocom2
  2225.     bsr    rotchg        ;handle command
  2226.  
  2227.     cmp.l    #5,rotmod-rot(a5)    ;andere mode ?
  2228.     bne    rotp.reset
  2229.  
  2230.  
  2231.     tst.l    rotc_fon-rot(a5)    ;font opnieuw halen
  2232.     beq    rotp.end
  2233.     move.l    rotc_fon-rot(a5),a1
  2234.     lea    fon_widtab(a1),a3    ;breedte opnieuw halen
  2235.     bra    rotp.c
  2236. rotp.nocom2
  2237.     move.l    d7,d2
  2238.  
  2239. ;    lsl.l    #1,d2
  2240.     add.l    d2,d2
  2241.     
  2242.     tst.w    (a3,d2)        ;karakter leeg ?
  2243.     beq    rotp.c
  2244.  
  2245.     move.l    fon_hgt(a1),d4
  2246.     cmp.w    2+rotmaxr-rot(a5),d4    ;maxy check
  2247.     blt    rotp.notbigger
  2248.     move.l    d4,rotmaxr-rot(a5)
  2249. rotp.notbigger
  2250.  
  2251.     move.l    rotpsx-rot(a5),d4    ;huidige x-positie
  2252.     add.w    (a3,d2),d4
  2253.  
  2254.     cmp.w    #(rotc_wid+rotv_wid)*8,d4    ;beeld breedte
  2255.     bgt    rotp.caa        ;randje bereikt ?
  2256.  
  2257.     move.l    rotmaxr-rot(a5),d6    maxy
  2258.     sub.l    fon_hgt(a1),d6    ;-huidige y
  2259.     lsr.l    #1,d6        ;/2
  2260.     add.l    rotpsy-rot(a5),d6    ;huidig ypos
  2261.     sub.l    d3,d6        ;hoogte aanpassing
  2262.  
  2263.     move.l    #rotv_hgt+rotc_hgty,d4
  2264.     cmp.l    d4,d6
  2265.     ble    rotp.nomaxy
  2266.     move.l    d4,d6
  2267. rotp.nomaxy
  2268.  
  2269.     move.l    rotcol-rot(a5),d4    ;kleur
  2270.     move.l    rotpsx-rot(a5),d5    ;huidge x-pos halen
  2271.     bsr    rotchr
  2272.  
  2273. rotp.caa
  2274.     move.w    (a3,d2),d4
  2275.     add.w    d4,2+rotpsx-rot(a5)    ;xpos
  2276.  
  2277.     sub.l    #1,rotchrn-rot(a5)    ;chars aftellen
  2278.     tst.l    rotchrn-rot(a5)
  2279.     beq    rotp.d        ;klaar voor nu
  2280.     bra    rotp.c
  2281.  
  2282. rotp.gb
  2283.     move.l    rottnew-rot(a5),rottpos-rot(a5)    ;einde scroll
  2284.     bra    rotp.end
  2285.  
  2286. rotp.d
  2287.     clr.l    rotchrvb-rot(a5)
  2288.     clr.l    rotchrn-rot(a5)
  2289.     move.l    a2,rottpos-rot(a5)
  2290.  
  2291.     move.l    rotmaxr-rot(a5),d0    ;max hoogte
  2292.     add.l    d0,rotpsy-rot(a5)    ;huidig ypos
  2293.  
  2294.     tst.l    rotdel-rot(a5)    ;geen delay=volgend regel
  2295.     beq    rotp.char
  2296.     bra    rotp.end
  2297.     
  2298. rotp.reset
  2299.     bsr    rotres
  2300. rotp.end
  2301.     movem.l    (sp)+,d0-d7/a0-a6
  2302.     rts
  2303.  
  2304.  
  2305. roty
  2306.     movem.l    d0-d7/a0-a6,-(sp)    ;y scroll
  2307.     
  2308.     tst.l    rotc_fon-rot(a5)    ;font leeg ?
  2309.     beq    roty.end
  2310.     move.l    rotc_fon-rot(a5),a1
  2311.  
  2312.     move.l    rotchp-rot(a5),a2
  2313.     add.l    #rotpln1-rotc,a2
  2314.     add.l    #(rots_wid-(rotv_wid-rots_scrwid-rots_cen))/2,a2;xstart
  2315.     add.l    #rotc_hgty*rots_wid*rots_dpt,a2    ;ystart
  2316.     move.l    a2,a0            ;destination
  2317.  
  2318.     move.l    rotdub-rot(a5),d0
  2319.     add.l    d0,a0            ;destination
  2320.     eor.l    #rotpic2-rotpic1,d0
  2321.     add.l    d0,a2            ;source
  2322.  
  2323.     moveq.l    #0,d6
  2324.     tst.l    rotdel-rot(a5)    ;delay ?
  2325.     bne    roty.nomov
  2326.     move.l    rotspd-rot(a5),d6
  2327.     add.l    #1,d6
  2328. roty.nomov
  2329.  
  2330.     move.l    #(rotv_hgt+rotc_hgty)/rots_blit,d5 ;in rots_blit stappen
  2331.     move.l    d6,d0
  2332.     divs    #rots_blit,d0
  2333.     and.l    #$ffff,d0
  2334.     add.l    #1,d0
  2335.     sub.l    d0,d5
  2336.     muls    #rots_dpt,d5
  2337.     move.l    d5,d1
  2338.     muls    #rots_wid,d1
  2339.     lsl.l    #6,d5            ;*64
  2340.     add.l    #(rotv_wid-rots_scrwid)/2,d5
  2341.  
  2342.     muls    #rots_dpt*rots_wid,d6
  2343.     add.l    d6,a2
  2344.     
  2345. ;    move.w    #$4000,$09a(a6)    ;masterinterrupt
  2346.  
  2347.     move.w    #0,$042(a6)
  2348.     move.w    #$900+$f0,$040(a6)
  2349.  
  2350.     move.w    #rots_wid-(rotv_wid-rots_scrwid),$064(a6)
  2351.     move.w    #rots_wid-(rotv_wid-rots_scrwid),$066(a6)
  2352.     move.w    #%1111111111111111,$044(a6)
  2353.     move.w    #%1111111111111111,$046(a6)
  2354.  
  2355.     move.w    #rots_blit-1,d0
  2356. roty.blit
  2357.     move.l    a2,$050(a6)        ;source
  2358.     move.l    a0,$054(a6)        ;destination
  2359.     move.w    d5,$058(a6)
  2360.     bsr    rotwit
  2361. ;    move.w    #$c000,$09a(a6)    ;masterinterrupt
  2362.  
  2363.     add.l    d1,a0
  2364.     add.l    d1,a2
  2365.     dbra    d0,roty.blit
  2366.  
  2367.     tst.l    rotdel-rot(a5)    ;delay ?
  2368.     bne    roty.end
  2369.  
  2370.     tst.b    rotwaitx-rot(a5)    ;regel voorbij ?
  2371.     beq    roty.char
  2372.  
  2373.     tst.l    rotchrn-rot(a5)    ;nog karakters printen ?
  2374.     beq    roty.ga
  2375.     bra    roty.print
  2376.     
  2377. roty.char
  2378.     move.l    rottpos-rot(a5),a2    ;textpos
  2379.     move.l    #8,rotmaxr-rot(a5)    ;max regelhoogte wissen
  2380.  
  2381.     lea    fon_widtab(a1),a3
  2382.     moveq.l    #0,d1        ;text lengte
  2383.     moveq.l    #0,d2        ;aantal chars
  2384.     moveq.l    #0,d3        ;reverse point
  2385. roty.a                ;text lengte tellen
  2386.     tst.b    (a2)+        ;einde text ?
  2387.     beq    roty.bb
  2388.     cmp.b    #$a,-1(a2)
  2389.     beq    roty.bb
  2390.  
  2391.     moveq.l    #0,d7
  2392.     move.b    -1(a2),d7
  2393.     cmp.b    #'_',d7
  2394.     bne    roty.nocom
  2395.  
  2396.     bsr    rotchgc        ;handle command
  2397.  
  2398.     tst.l    rotrev-rot(a5)    ;reverse centreren ?
  2399.     beq    roty.norev
  2400.     move.l    rotrev-rot(a5),d0    ;reverse punt
  2401.     clr.l    rotrev-rot(a5)    ;reverse wissen
  2402.     sub.l    d1,d0        ;-huidige lengte
  2403.     cmp.w    #0,d0
  2404.     bge    roty.revk
  2405.     moveq.l    #0,d0
  2406. roty.revk
  2407.     move.l    d0,d3
  2408.  
  2409. roty.norev
  2410.  
  2411.     tst.l    rotc_fon-rot(a5)    ;font opnieuw halen
  2412.     beq    roty.end
  2413.     move.l    rotc_fon-rot(a5),a1
  2414.     lea    fon_widtab(a1),a3
  2415.     bra    roty.a
  2416.  
  2417. roty.nocom
  2418.     move.l    fon_hgt(a1),d0
  2419.     cmp.w    2+rotmaxr-rot(a5),d0    ;maxy check
  2420.     blt    roty.notbigger2
  2421.     move.l    d0,rotmaxr-rot(a5)
  2422. roty.notbigger2
  2423.  
  2424. ;    lsl.l    #1,d7
  2425.     add.l    d7,d7
  2426.     
  2427.     add.w    (a3,d7),d1        ;breedte karakter optellen
  2428.     add.l    #1,d2        ;aantal karakters
  2429.     bra    roty.a
  2430.  
  2431. roty.bb
  2432.     cmp.l    #(rotv_wid-rots_scrwid)*8,d1    ;beeld breedte
  2433.     ble    roty.cx
  2434.     move.l    #(rotv_wid-rots_scrwid)*8,d1
  2435.  
  2436. roty.cx
  2437.     tst.l    d3        ;reverse centreren ?
  2438.     beq    roty.mid
  2439.     move.l    d3,rotpsx-rot(a5)
  2440.     bra    roty.rev
  2441. roty.mid
  2442.     move.l    #(rots_wid+rots_cen)*4,d5    ;midden centreren
  2443.     lsr.l    #1,d1        ;/2
  2444.     sub.l    d1,d5        ;xpos
  2445.     move.l    d5,rotpsx-rot(a5)
  2446.  
  2447. roty.rev
  2448.     move.l    d2,rotchrn-rot(a5)    ;aantal characters
  2449.     move.l    rotmaxr-rot(a5),d0    ;hoogte regel
  2450.     cmp.w    #32,d0        ;maximaal 32 stappen
  2451.     ble    roty.nocut
  2452.     move.l    #32,d0
  2453. roty.nocut
  2454.     move.l    rotspd-rot(a5),d1    ;snelheid
  2455.     add.l    #1,d1
  2456.     divs    d1,d0        ;hoogte/snelheid
  2457.     and.l    #$ffff,d0
  2458.     divs    d0,d2        ;aantal chars/(hoogte/snelheid)
  2459.     add.w    #1,d2
  2460.     move.w    d2,2+rotchrvb-rot(a5)    ;aantal per vb
  2461.  
  2462.     clr.l    rotchrp-rot(a5)
  2463. roty.print
  2464.     lea    fon_widtab(a1),a3
  2465.  
  2466.     move.l    rotchp-rot(a5),a0
  2467.     add.l    #rotpln1-rotc,a0        ;text printen
  2468.     add.l    rotdub-rot(a5),a0
  2469.  
  2470.     move.l    rotchrvb-rot(a5),d1    ;aantal chars per keer
  2471.     move.l    rottpos-rot(a5),a2    ;textpos
  2472.     move.l    rotchrp-rot(a5),d3    ;hoogte aanpassing
  2473.  
  2474.     move.l    rotspd-rot(a5),d0
  2475.     add.l    #1,d0
  2476.     muls    d0,d3
  2477.  
  2478.     add.l    #1,rotchrp-rot(a5)    ;1 lijn hoger printen
  2479. roty.c
  2480.     tst.b    (a2)+
  2481.     beq    roty.gb
  2482.     cmp.b    #$a,-1(a2)
  2483.     beq    roty.d
  2484.  
  2485.     moveq.l    #0,d7
  2486.     move.b    -1(a2),d7
  2487.  
  2488.     cmp.b    #'_',d7
  2489.     bne    roty.nocom2
  2490.     bsr    rotchg        ;handle command
  2491.  
  2492.     cmp.l    #3,rotmod-rot(a5)    ;y scroll ?
  2493.     beq    roty.cont
  2494.     cmp.l    #4,rotmod-rot(a5)    ;y scroll ?
  2495.     bne    roty.reset
  2496. roty.cont
  2497.  
  2498.     tst.l    rotc_fon-rot(a5)    ;font opnieuw halen
  2499.     beq    roty.end
  2500.     move.l    rotc_fon-rot(a5),a1
  2501.     lea    fon_widtab(a1),a3    ;breedte opnieuw halen
  2502.     bra    roty.c
  2503. roty.nocom2
  2504.     move.l    d7,d2
  2505. ;    lsl.l    #1,d2
  2506.     add.l    d2,d2
  2507.  
  2508.     tst.w    (a3,d2)        ;karakter leeg ?
  2509.     beq    roty.c
  2510.  
  2511.     move.l    fon_hgt(a1),d4
  2512.     cmp.w    2+rotmaxr-rot(a5),d4    ;maxy check
  2513.     blt    roty.notbigger
  2514.     move.l    d4,rotmaxr-rot(a5)
  2515. roty.notbigger
  2516.  
  2517.     move.l    rotpsx-rot(a5),d4    ;huidige x-positie
  2518.     add.w    (a3,d2),d4
  2519.  
  2520.     cmp.w    #(rotc_wid+rotv_wid)*8,d4    ;beeld breedte
  2521.     bgt    roty.caa        ;randje bereikt ?
  2522.  
  2523.     move.l    rotmaxr-rot(a5),d6    ;maxy
  2524.     sub.l    fon_hgt(a1),d6    ;-huidige y
  2525.     lsr.l    #1,d6        ;/2
  2526.     add.l    #rotv_hgt+rotc_hgty,d6    ;ypos
  2527.     sub.l    d3,d6        ;hoogte aanpassing
  2528.         
  2529.     move.l    rotcol-rot(a5),d4    ;kleur
  2530.     move.l    rotpsx-rot(a5),d5    ;huidge x-pos halen
  2531.     bsr    rotchr
  2532.  
  2533. roty.caa
  2534.     move.w    (a3,d2),d4
  2535.     add.w    d4,2+rotpsx-rot(a5)    ;xpos
  2536.  
  2537.     sub.l    #1,rotchrn-rot(a5)    ;chars aftellen
  2538.     tst.l    rotchrn-rot(a5)
  2539.     beq    roty.d        ;klaar voor nu
  2540.     sub.l    #1,d1        ;vblank aftellen
  2541.     tst.l    d1
  2542.     beq    roty.dj
  2543.     bra    roty.c
  2544.  
  2545. roty.gb
  2546.     move.l    rottnew-rot(a5),rottpos-rot(a5)    ;einde scroll
  2547.     bra    roty.gj
  2548. roty.d
  2549.     clr.l    rotchrvb-rot(a5)
  2550.     clr.l    rotchrn-rot(a5)
  2551. roty.dj
  2552.     move.l    a2,rottpos-rot(a5)
  2553. roty.gc
  2554.     tst.b    rotwaitx-rot(a5)    ;regel voorbij ?
  2555.     bne    roty.ga
  2556.  
  2557. roty.gj
  2558.     move.l    rotmaxr-rot(a5),d0    ;max hoogte
  2559.     move.l    rotspd-rot(a5),d1
  2560.     add.l    #1,d1
  2561.     divs    d1,d0
  2562.     move.b    d0,rotwaitx-rot(a5)
  2563.     bra    roty.end
  2564. roty.ga
  2565.     sub.b    #1,rotwaitx-rot(a5)    ;teller aftellen
  2566. ;roty.gt
  2567.     bra    roty.end
  2568. roty.reset
  2569.     bsr    rotres
  2570. roty.end
  2571.     movem.l    (sp)+,d0-d7/a0-a6
  2572.     rts
  2573.  
  2574.  
  2575. rotx
  2576.     movem.l    d0-d7/a0-a6,-(sp)
  2577.     
  2578.     bsr    rotxc
  2579.     bsr    rotxb
  2580.     
  2581.     movem.l    (sp)+,d0-d7/a0-a6
  2582.     rts
  2583.     
  2584. rotxc                ;karakter zetten
  2585.     movem.l    d0-d7/a0-a6,-(sp)
  2586.  
  2587. rotxc.a
  2588.     tst.l    rotdel-rot(a5)    ;delay ?
  2589.     bne    rotxc.end
  2590.  
  2591.     move.l    rottpos-rot(a5),a2    ;huidige scroll pointer
  2592.     
  2593. rotxc.f
  2594.     tst.b    (a2)        ;einde scroll ?
  2595.     bne    rotxc.g
  2596.     move.l    rottnew-rot(a5),rottpos-rot(a5)    ;scroll opnieuw
  2597.     bra    rotxc.a
  2598. rotxc.g
  2599.     tst.b    rotwaitx-rot(a5)    ;karakter voorbij ?
  2600.     bne    rotxc.c
  2601.  
  2602. rotxc.zb
  2603.     moveq.l    #0,d7
  2604.     move.b    (a2)+,d7
  2605.     cmp.b    #'_',d7        ;commando ?
  2606.     bne    rotxc.za
  2607.  
  2608.     bsr    rotchg        ;handle command
  2609.  
  2610.     tst.l    rotdel-rot(a5)    ;delay ?
  2611.     bne    rotxc.store
  2612.  
  2613.     cmp.l    #3,rotmod-rot(a5)    ;y scroll ?
  2614.     beq    rotxc.reset
  2615.     cmp.l    #4,rotmod-rot(a5)    ;y scroll ?
  2616.     beq    rotxc.reset
  2617.     cmp.l    #5,rotmod-rot(a5)    ;page ?
  2618.     beq    rotxc.reset
  2619.  
  2620.     bra    rotxc.zb
  2621. rotxc.za
  2622.     tst.l    rotc_fon-rot(a5)    ;font leeg ?
  2623.     beq    rotxc.end
  2624.     move.l    rotc_fon-rot(a5),a1
  2625.  
  2626.     move.l    rotpsy-rot(a5),d6    ;ypos & centreren
  2627.  
  2628.     move.l    #rotv_hgt+rotc_hgty,d1
  2629.     cmp.l    d1,d6
  2630.     ble    rotxc.nomaxy2
  2631.     move.l    d1,d6
  2632. rotxc.nomaxy2
  2633.  
  2634.     move.l    fon_hgt(a1),d1
  2635.     lsr.l    #1,d1
  2636.     sub.l    d1,d6
  2637.  
  2638.     moveq.l    #0,d1
  2639.     lea    fon_widtab(a1),a3
  2640.     move.l    d7,d2
  2641. ;    lsl.l    #1,d2        ;*2
  2642.     add.l    d2,d2
  2643.  
  2644.     move.w    (a3,d2),d1        ;karakter breedte
  2645.     tst.w    d1        ;karakter is leeg ?
  2646.     beq    rotxc.zb        ;next karakter
  2647.  
  2648.     move.l    #(rots_wid+rotv_wid)*4,d5    ;xpos
  2649.     cmp.l    #2,rotmod-rot(a5)        ;> scroll ?
  2650.     bne    rotxc.nor
  2651.     move.l    #(rots_wid-rotv_wid)*4,d5    ;xpos
  2652.     sub.l    d1,d5            ;-breedte
  2653. rotxc.nor
  2654.     move.l    rotcol-rot(a5),d4    ;kleur
  2655.  
  2656.     move.l    rotchp-rot(a5),a0
  2657.     add.l    #rotpln1-rotc,a0
  2658.     move.l    rotdub-rot(a5),d0
  2659.     eor.l    #rotpic2-rotpic1,d0
  2660.     add.l    d0,a0
  2661.     bsr    rotchr        ;print karakter
  2662.  
  2663.     move.l    rotspd-rot(a5),d0
  2664.     add.l    #1,d0
  2665.     divs    d0,d1
  2666.     move.b    d1,rotwaitx-rot(a5)    ;karakter breedte
  2667.     bra    rotxc.store
  2668. rotxc.c
  2669.     sub.b    #1,rotwaitx-rot(a5)    ;karakter delay
  2670.     bra    rotxc.end
  2671. rotxc.reset
  2672.     bsr    rotres
  2673. rotxc.store
  2674.     move.l    a2,rottpos-rot(a5)
  2675. rotxc.end
  2676.     movem.l    (sp)+,d0-d7/a0-a6
  2677.     rts
  2678.  
  2679. rotxb
  2680.     movem.l    d0-d7/a0-a6,-(sp)
  2681.  
  2682.     tst.l    rotc_fon-rot(a5)    ;font leeg ?
  2683.     beq    rotxb.end
  2684.     move.l    rotc_fon-rot(a5),a1
  2685.  
  2686.     move.l    rotchp-rot(a5),a0
  2687.     add.l    #rotpln1-rotc,a0        ;ycentreren
  2688.  
  2689.     move.l    rotpsy-rot(a5),d0
  2690.  
  2691. ;    move.l    #rotv_hgt+rotc_hgty,d1
  2692. ;    cmp.l    d1,d0
  2693. ;    ble    rotxb.nomaxy
  2694. ;    move.l    d1,d0
  2695. ;rotxb.nomaxy
  2696.  
  2697.     move.l    #rotc_hgtx/2,d1
  2698.     sub.l    d1,d0
  2699.     muls    #rots_wid*rots_dpt,d0
  2700.     add.l    d0,a0
  2701.  
  2702.     add.l    #(rots_wid-rotv_wid)/2,a0    ;xcentreren
  2703.  
  2704.     move.l    a0,a2        ;destination !!!
  2705.  
  2706.     move.l    rotdub-rot(a5),d0
  2707.     add.l    d0,a2        ;destination
  2708.     eor.l    #rotpic2-rotpic1,d0
  2709.     add.l    d0,a0        ;source
  2710.  
  2711.     move.l    rotspd-rot(a5),d6    ;rotate word berekenen
  2712.  
  2713.     cmp.l    #1,rotmod-rot(a5)    ;rechts scroll
  2714.     beq    rotxb.left
  2715.  
  2716.     moveq.l    #0,d0
  2717.     tst.l    rotdel-rot(a5)    ;delay ?
  2718.     bne    rotxb.del1
  2719.  
  2720.     add.l    #1,d6
  2721.     divs    #16,d6
  2722.  
  2723. ;    lsl.w    #1,d6
  2724.     add.w    d6,d6
  2725.  
  2726.     moveq.l    #0,d5
  2727.     move.w    d6,d5
  2728.     clr.w    d6
  2729.     lsr.l    #4,d6
  2730.  
  2731.     sub.l    d5,a0
  2732.     move.l    d6,d0
  2733. rotxb.del1
  2734.     
  2735.     move.w    #%1111111111111111,$044(a6)
  2736.     move.w    #%0,$046(a6)
  2737.  
  2738.     sub.l    rotc_maxx-rot(a5),a0
  2739.     sub.l    rotc_maxx-rot(a5),a2
  2740.     bra    rotxb.xblit
  2741. rotxb.left
  2742.  
  2743.     moveq.l    #0,d0
  2744.     tst.l    rotdel-rot(a5)    ;delay ?
  2745.     bne    rotxb.del2
  2746.  
  2747.     divs    #16,d6
  2748. ;    lsl.w    #1,d6
  2749.     add.w    d6,d6
  2750.     
  2751.     moveq.l    #0,d5
  2752.     move.w    d6,d5
  2753.     clr.w    d6
  2754.     lsr.l    #4,d6
  2755.  
  2756.     add.l    d5,a0        ;links scroll
  2757.     add.l    #2,a0
  2758.     
  2759.     move.l    #$f000,d0
  2760.     sub.l    d6,d0
  2761. rotxb.del2
  2762.  
  2763.     move.w    #%1111111111111111,$044(a6)
  2764.     move.w    #%1111111111111111,$046(a6)
  2765.  
  2766. rotxb.xblit
  2767. ;    move.w    #$4000,$09a(a6)    ;masterinterrupt
  2768.  
  2769.     move.w    d0,$042(a6)
  2770.     add.w    #$900+$f0,d0
  2771.     move.w    d0,$040(a6)
  2772.  
  2773.     move.l    #rots_wid-rotv_wid,d0    ;modulos
  2774.     sub.l    rotc_maxx-rot(a5),d0
  2775.     move.w    d0,$064(a6)
  2776.     move.w    d0,$066(a6)
  2777.  
  2778.     move.l    #rotc_hgtx*rots_dpt*64,d1    ;*depth
  2779. ;    move.l    rotc_maxy-rot(a5),d1    ;hoogte regel
  2780. ;    lsl.l    #6,d1
  2781.  
  2782.     move.l    #rotv_wid,d0
  2783.     add.l    rotc_maxx-rot(a5),d0
  2784.     lsr.l    #1,d0
  2785.     add.w    d1,d0
  2786.     
  2787. rotxb.ka
  2788.     move.l    a0,$050(a6)        ;source
  2789.     move.l    a2,$054(a6)        ;destination
  2790.     move.w    d0,$058(a6)
  2791.     bsr    rotwit
  2792. ;    move.w    #$c000,$09a(a6)    ;masterinterrupt
  2793.  
  2794. rotxb.end
  2795.     movem.l    (sp)+,d0-d7/a0-a6
  2796.     rts
  2797.  
  2798. rotres
  2799.     movem.l    d0-d7/a0-a6,-(sp)
  2800.     clr.l    rotmaxr-rot(a5)
  2801.     clr.l    rotmaxx-rot(a5)
  2802.     clr.l    rotchrn-rot(a5)
  2803.     clr.l    rotchrvb-rot(a5)
  2804.     clr.l    rotchrp-rot(a5)
  2805.     movem.l    (sp)+,d0-d7/a0-a6
  2806.     rts
  2807.  
  2808. rotnum                ;a2=string = d0=nummer
  2809.     movem.l    d1-d7/a0-a1/a3-a6,-(sp)
  2810.  
  2811.     moveq.l    #0,d0
  2812.     move.l    a2,a0    
  2813. rotnum.gb
  2814.     cmp.b    #'0',(a2)+        ;einde nummer zoeken
  2815.     blt    rotnum.ga    
  2816.     cmp.b    #'9',-1(a2)
  2817.     ble    rotnum.gb
  2818. rotnum.ga
  2819.     sub.l    #1,a2
  2820.     move.l    a2,a1        ;einde nummer bewaren
  2821.     
  2822.     cmp.l    a0,a1        ;helemaal niets ?
  2823.     beq    rotnum.end
  2824.     
  2825.     move.l    #1,d3        ;hoogte ascii naar decimaal
  2826. rotnum.c
  2827.     moveq.l    #0,d1
  2828.     move.b    -(a1),d1
  2829.  
  2830.     cmp.b    #'0',d1        ;nummer ?
  2831.     blt    rotnum.ca    
  2832.     cmp.b    #'9',d1
  2833.     bgt    rotnum.ca
  2834.  
  2835.     sub.w    #'0',d1
  2836.     muls    d3,d1
  2837.     add.l    d1,d0
  2838.     muls    #10,d3
  2839.     bra    rotnum.c
  2840.  
  2841. rotnum.ca
  2842. rotnum.end
  2843.     movem.l    (sp)+,d1-d7/a0-a1/a3-a6
  2844.     rts
  2845.     
  2846. ;    Karakter op scherm
  2847. ;    a0=bitplane
  2848. ;    a1=fontfile
  2849. ;    d4=kleur
  2850. ;    d5=x
  2851. ;    d6=y
  2852. ;    d7=karakter
  2853.  
  2854. rotchr
  2855.     movem.l    d0-d7/a0-a6,-(sp)
  2856.  
  2857.     lea    fon_rawpos(a1),a3
  2858.     moveq.l    #0,d0
  2859.     move.b    d7,d0
  2860.  
  2861. ;    lsl.l    #2,d0        ;*4
  2862.     add.l    d0,d0
  2863.     add.l    d0,d0
  2864.  
  2865.     move.l    a1,a2
  2866.  
  2867.     tst.l    (a3,d0)        ;is er char ?
  2868.     beq    rotchr.end
  2869.     
  2870.     add.l    (a3,d0),a2        ;raw planes
  2871.     
  2872.     lea    fon_widtab(a1),a3
  2873.     lsr.l    #1,d0        ;/2
  2874.     move.w    (a3,d0),d3
  2875.     add.w    2+fon_wid(a1),d3    ;+xpos
  2876.     add.w    #16+15,d3        ;wordboven afrond+blitruimte
  2877.     lsr.w    #4,d3        ;/16
  2878.  
  2879. ;    lsl.w    #1,d3        ;*2 D3=wid !!!!!!
  2880.     add.w    d3,d3
  2881.         
  2882.     move.l    d3,d2
  2883.     muls    2+fon_hgt(a1),d2    ;d3=x*y
  2884.  
  2885.     muls    #rots_wid*rots_dpt,d6    ;y
  2886.     add.l    d6,a0
  2887.  
  2888.     divs    #16,d5        ;x
  2889.  
  2890. ;    lsl.w    #1,d5
  2891.     add.w    d5,d5
  2892.     
  2893.     moveq.l    #0,d0
  2894.     move.w    d5,d0
  2895.     add.l    d0,a0        ;destination !
  2896.     clr.w    d5
  2897.     lsr.l    #4,d5
  2898.  
  2899. ;    move.w    #$4000,$09a(a6)
  2900.  
  2901.     move.l    #-1,$044(a6)
  2902.  
  2903.     move.w    d5,$042(a6)        ;x-rol
  2904.     add.w    #$f00+$ca,d5
  2905.     move.w    d5,$040(a6)        ;x-rol
  2906.  
  2907.     move.l    #rots_wid*rots_dpt,d0
  2908.     sub.l    d3,d0
  2909.     move.w    d0,$060(a6)
  2910.  
  2911.     move.w    #0,$062(a6)
  2912.     move.w    #0,$064(a6)
  2913.  
  2914.     move.w    d0,$066(a6)
  2915.  
  2916.     move.l    fon_dpt(a1),d7    ;font depth
  2917.  
  2918.     move.l    a2,a3        ;source=mask
  2919.     cmp.w    #1,d7        ;mask handling
  2920.     beq    rotchr.aa
  2921.     move.l    d2,d0        ;x*y
  2922.     muls    2+fon_dpt(a1),d0    ;*d
  2923.     add.l    d0,a3        ;mask
  2924. rotchr.aa
  2925.     move.l    #rots_dpt,d6
  2926.     cmp.w    d6,d7        ;fontdpt>screendpt ?
  2927.     ble    rotchr.ab
  2928.     move.w    d6,d7
  2929. rotchr.ab
  2930.     sub.w    #1,d6
  2931.     sub.w    #1,d7
  2932.     
  2933.     move.l    fon_hgt(a1),d0    ;bltsiz
  2934.     lsl.l    #6,d0
  2935.     move.l    d3,d1
  2936.     lsr.l    #1,d1
  2937.     add.l    d1,d0
  2938.  
  2939.     tst.w    d7        ;geen colorfont ?
  2940.     beq    rotchr.msk
  2941. rotchr.a    
  2942.     move.l    a0,$048(a6)        ;destination
  2943.     move.l    a2,$04c(a6)        ;source ?
  2944.     move.l    a3,$050(a6)        ;(a3) mask ?
  2945.     move.l    a0,$054(a6)        ;destination
  2946.     move.w    d0,$058(a6)
  2947.     bsr    rotwit
  2948.     add.l    d2,a2        ;x*y
  2949.     add.l    #rots_wid,a0
  2950.     sub.l    #1,d6
  2951.     dbra    d7,rotchr.a
  2952.  
  2953. rotchr.msk
  2954.     cmp.w    #-1,d6        ;alle screenframes gehad ?
  2955.     beq    rotchr.ax
  2956.     moveq.l    #0,d1
  2957. rotchr.ac
  2958.     btst    d1,d4        ;kleur ?
  2959.     beq    rotchr.ad
  2960.     move.l    a0,$048(a6)        ;destination
  2961.     move.l    a3,$04c(a6)        ;mask
  2962.     move.l    a3,$050(a6)        ;mask
  2963.     move.l    a0,$054(a6)        ;destination
  2964.     move.w    d0,$058(a6)
  2965.     bsr    rotwit
  2966. rotchr.ad
  2967.     add.l    #1,d1
  2968.     add.l    #rots_wid,a0
  2969.     dbra    d6,rotchr.ac
  2970.  
  2971. rotchr.ax
  2972. ;    move.w    #$c000,$09a(a6)
  2973. rotchr.end
  2974.     movem.l    (sp)+,d0-d7/a0-a6
  2975.     rts
  2976.  
  2977.     
  2978. rotwit
  2979. rotwit.a
  2980.     btst    #14-8,($dff002).l
  2981.     bne    rotwit.a
  2982.     rts
  2983.     
  2984. rotchp    dc.l    0
  2985. rotdub    dc.l    0
  2986.  
  2987. rotc_fon    dc.l    0    ;currentfont
  2988. rotc_fonnum    dc.l    0    ;currentfontnumber
  2989. rotc_maxy    dc.l    rotc_hgty    ;maximale y-waarde
  2990. rotc_maxx    dc.l    rotc_wid    ;maximale x-waarde
  2991.  
  2992. rotrev    dc.l    0    ;delay
  2993. rotdel    dc.l    0    ;delay
  2994. rotpsx    dc.l    0    ;huidige xpos
  2995. rotpsy    dc.l    (rots_hgt/2);huidige ypos
  2996.  
  2997. rotmaxx    dc.l    0    ;
  2998. rotmaxr    dc.l    0    ;maximale regelhoogte
  2999. rotchrn    dc.l    0    ;aantal chars per vb
  3000. rotchrvb    dc.l    0    ;aantal chars per regel
  3001. rotchrp    dc.l    0    ;hoogte aanpassing
  3002.  
  3003. rotvar    dc.l    0
  3004. rotspd    dc.l    0
  3005. rotcol    dc.l    0    ;huidige karakterkleur
  3006. rotmod    dc.l    0
  3007.  
  3008. rottnew    dc.l    0
  3009. rottpos    dc.l    0
  3010.  
  3011. rotwaitx    dc.b    0
  3012.  
  3013.  
  3014. ;pic_wid    equ    4        ;wide in bytes
  3015. ;pic_hgt    equ    6        ;hoogte
  3016. ;pic_dpt    equ    8        ;number planes
  3017. ;pic_ani    equ    10        ;aantal effes (anim)
  3018. ;pic_vew    equ    12        ;viewmode
  3019. ;pic_cycstr    equ    14        ;cycle start (*4)
  3020. ;pic_cycend    equ    15        ;cycle end (*4)
  3021. ;pic_cycspd    equ    16        ;cycle speed (*4)
  3022. ;pic_cycadd    equ    17        ;cycle add (*4)
  3023. ;pic_palnum    equ    30        ;aantal kleuren
  3024. ;pic_pal    equ    32        ;palette start
  3025. ;pic_palsiz    equ    256*2        ;vaste palette size
  3026. ;pic_raw    equ    pic_pal+pic_palsiz    ;palette start
  3027.  
  3028.  
  3029. rotpub.e
  3030.  
  3031.     SECTION    4,CODE_c
  3032.     cnop    0,8
  3033. rotc
  3034.     ifd    ocs
  3035.     dc.l    'ROTO'
  3036.     endc
  3037.     ifnd    ocs
  3038.     dc.l    'ROTA'
  3039.     endc
  3040.     rts
  3041.  
  3042.     cnop    0,8
  3043. rotpic1
  3044.     dc.l    'PICT'
  3045.     dc.w    rots_wid,rots_hgt,rots_dpt,1,rots_vew
  3046.     ifd    ocs
  3047.     ds.b    4*4
  3048.     endc
  3049.     ifnd    ocs
  3050.     ds.b    8*4+16
  3051.     endc
  3052.     
  3053.     ifeq    rots_dpt-1
  3054.     dc.w    2-1
  3055.     ifd    ocs
  3056.     dc.w    $000,$fff
  3057.     ds.w    256-2
  3058.     endc
  3059.     ifnd    ocs
  3060.     dc.w    $000,0,$fff,0
  3061.     ds.l    256-2
  3062.     endc
  3063.     endc
  3064.  
  3065.     ifeq    rots_dpt-2
  3066.     dc.w    4-1
  3067.     ifd    ocs
  3068.     dc.w    $000,$fff,$bbb,$555
  3069.     ds.w    256-4
  3070.     endc
  3071.     ifnd    ocs
  3072.     dc.w    $000,0,$fff,0,$bbb,0,$555,0
  3073.     ds.l    256-4
  3074.     endc
  3075.     endc
  3076.  
  3077.     ifeq    rots_dpt-3
  3078.     dc.w    8-1
  3079.     ifd    ocs
  3080.     dc.w    $000,$fff,$ddd,$bbb,$999,$777,$555,$333
  3081.     ds.w    256-8
  3082.     endc
  3083.     ifnd    ocs
  3084.     dc.w    $000,0,$fff,0,$ddd,0,$bbb,0,$999,0,$777,0,$555,0,$333,0
  3085.     ds.l    256-8
  3086.     endc
  3087.     endc
  3088.  
  3089.     ifeq    rots_dpt-4
  3090.     dc.w    16-1
  3091.     ifd    ocs
  3092.     dc.w    $000,$fff,$ddd,$bbb,$999,$777,$555,$333
  3093.     dc.w    $000,$ff0,$dd0,$bb0,$990,$770,$550,$330
  3094.     ds.w    256-16
  3095.     endc
  3096.     ifnd    ocs
  3097.     dc.w    $000,0,$fff,0,$ddd,0,$bbb,0,$999,0,$777,0,$555,0,$333,0
  3098.     dc.w    $000,0,$ff0,0,$dd0,0,$bb0,0,$990,0,$770,0,$550,0,$330,0
  3099.     ds.l    256-16
  3100.     endc
  3101.     endc
  3102.  
  3103.     ifeq    rots_dpt-5
  3104.     dc.w    32-1
  3105.     ifd    ocs
  3106.     dc.w    $000,$fff,$ddd,$bbb,$999,$777,$555,$333
  3107.     dc.w    $000,$ff0,$dd0,$bb0,$990,$770,$550,$330
  3108.     dc.w    $000,$0ff,$0dd,$0bb,$099,$077,$055,$033
  3109.     dc.w    $000,$f0f,$d0d,$b0b,$909,$707,$505,$303
  3110.     ds.w    256-32
  3111.     endc
  3112.     ifnd    ocs
  3113.     dc.w    $000,0,$fff,0,$ddd,0,$bbb,0,$999,0,$777,0,$555,0,$333,0
  3114.     dc.w    $000,0,$ff0,0,$dd0,0,$bb0,0,$990,0,$770,0,$550,0,$330,0
  3115.     dc.w    $000,0,$0ff,0,$0dd,0,$0bb,0,$099,0,$077,0,$055,0,$033,0
  3116.     dc.w    $000,0,$f0f,0,$d0d,0,$b0b,0,$909,0,$707,0,$505,0,$303,0
  3117.     ds.l    256-32
  3118.     endc
  3119.     endc
  3120.  
  3121. rotpln1
  3122.     ds.b    rots_dpt*rots_wid*rots_hgt
  3123.  
  3124.     cnop    0,8
  3125. rotpic2
  3126.     dc.l    'PICT'
  3127.     dc.w    rots_wid,rots_hgt,rots_dpt,1,rots_vew
  3128.     ifd    ocs
  3129.     ds.b    4*4
  3130.     endc
  3131.     ifnd    ocs
  3132.     ds.b    8*4+16
  3133.     endc
  3134.     
  3135.     ifeq    rots_dpt-1
  3136.     dc.w    2-1
  3137.     ifd    ocs
  3138.     dc.w    $000,$fff
  3139.     ds.w    256-2
  3140.     endc
  3141.     ifnd    ocs
  3142.     dc.w    $000,0,$fff,0
  3143.     ds.l    256-2
  3144.     endc
  3145.     endc
  3146.  
  3147.     ifeq    rots_dpt-2
  3148.     dc.w    4-1
  3149.     ifd    ocs
  3150.     dc.w    $000,$fff,$bbb,$555
  3151.     ds.w    256-4
  3152.     endc
  3153.     ifnd    ocs
  3154.     dc.w    $000,0,$fff,0,$bbb,0,$555,0
  3155.     ds.l    256-4
  3156.     endc
  3157.     endc
  3158.  
  3159.     ifeq    rots_dpt-3
  3160.     dc.w    8-1
  3161.     ifd    ocs
  3162.     dc.w    $000,$fff,$ddd,$bbb,$999,$777,$555,$333
  3163.     ds.w    256-8
  3164.     endc
  3165.     ifnd    ocs
  3166.     dc.w    $000,0,$fff,0,$ddd,0,$bbb,0,$999,0,$777,0,$555,0,$333,0
  3167.     ds.l    256-8
  3168.     endc
  3169.     endc
  3170.  
  3171.     ifeq    rots_dpt-4
  3172.     dc.w    16-1
  3173.     ifd    ocs
  3174.     dc.w    $000,$fff,$ddd,$bbb,$999,$777,$555,$333
  3175.     dc.w    $000,$ff0,$dd0,$bb0,$990,$770,$550,$330
  3176.     ds.w    256-16
  3177.     endc
  3178.     ifnd    ocs
  3179.     dc.w    $000,0,$fff,0,$ddd,0,$bbb,0,$999,0,$777,0,$555,0,$333,0
  3180.     dc.w    $000,0,$ff0,0,$dd0,0,$bb0,0,$990,0,$770,0,$550,0,$330,0
  3181.     ds.l    256-16
  3182.     endc
  3183.     endc
  3184.  
  3185.     ifeq    rots_dpt-5
  3186.     dc.w    32-1
  3187.     ifd    ocs
  3188.     dc.w    $000,$fff,$ddd,$bbb,$999,$777,$555,$333
  3189.     dc.w    $000,$ff0,$dd0,$bb0,$990,$770,$550,$330
  3190.     dc.w    $000,$0ff,$0dd,$0bb,$099,$077,$055,$033
  3191.     dc.w    $000,$f0f,$d0d,$b0b,$909,$707,$505,$303
  3192.     ds.w    256-32
  3193.     endc
  3194.     ifnd    ocs
  3195.     dc.w    $000,0,$fff,0,$ddd,0,$bbb,0,$999,0,$777,0,$555,0,$333,0
  3196.     dc.w    $000,0,$ff0,0,$dd0,0,$bb0,0,$990,0,$770,0,$550,0,$330,0
  3197.     dc.w    $000,0,$0ff,0,$0dd,0,$0bb,0,$099,0,$077,0,$055,0,$033,0
  3198.     dc.w    $000,0,$f0f,0,$d0d,0,$b0b,0,$909,0,$707,0,$505,0,$303,0
  3199.     ds.l    256-32
  3200.     endc
  3201.     endc
  3202.  
  3203. rotpln2
  3204.     ds.b    rots_dpt*rots_wid*rots_hgt
  3205.  
  3206. rotc.e
  3207. rot.e
  3208.  
  3209. ;**********************************************************************
  3210.  
  3211. ;and here are the incbin-files....
  3212.  
  3213.         ifd    rout
  3214.         cnop    0,8
  3215. rotincfon
  3216.         incbin    'w:effectaga/platinum_13.fon'
  3217.         cnop    0,8
  3218. rotinctxt
  3219.         incbin    'w:effectaga/scroll_l2.txt'
  3220.         endc
  3221.         
  3222.  
  3223.